Minimizing unicast bandwidth in an adaptive bit rate system

ABSTRACT

A multicast adaptive bit rate receiver is employed delay issuance of specific unicast HTTP adaptive bit rate media segment requests while waiting for receipt of stripped multicast media segments from a multicast server. An HTTP proxy may create a new internal state that waits for subsequent media segment URL requests. As the stripped multicast media segments are received, the HTTP requests queued in the proxy may be delivered to the local ABR client.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of priority under 35 U.S.C. §119(e)to U.S. Provisional Application No. 61/988,504 entitled “MINIMIZINGUNICAST BANDWIDTH DURING CHANNEL CHANGE,” filed on May 5, 2014, theentire disclosure of which is incorporated herein by reference.

BACKGROUND

An internet protocol video delivery network based on adaptive streamingtechniques can provide many advantages over traditional cable deliverysystems, such as greater flexibility, reliability, lower integrationcosts, new services, and new features. Adaptive streaming, also known asadaptive bitrate (ABR) streaming, is a delivery method for streamingvideo over Internet Protocol (IP). Adaptive bitrate streaming is atechnique for streaming multimedia across computer networks where thesource content is encoded at multiple bit rates. Adaptive bitrate (ABR)streaming uses encoders or packagers to provide multiple differentbitrates for the same multimedia content (resulting in different qualitylevels). ABR clients monitor the network and player resources todetermine which bitrate to request when streaming content. The ABRclient can switch to different bitrates depending on the state of theseresources.

In multicast ABR (MABR) solutions (where a particular encoded bitrate isdelivered as multicast to remote ABR clients), the system may have torevert to the use of unicast requests in order to retrieve some mediasegments. For example, during channel change times or ad-breaks, thedemand for unicast traffic is likely to peak and may result in excessivecongestion throughout the network.

Thus, improved techniques for minimizing unicast bandwidth, particularlyduring high congestion periods of unicast requests, are desirable.

BRIEF DESCRIPTION OF THE DRAWINGS

For the purpose of illustrating embodiments described below, there areshown in the drawings example constructions of the embodiments; however,the embodiments are not limited to the specific methods andinstrumentalities disclosed. In the drawings:

FIG. 1A depicts a high level illustration of a representative adaptivebit rate system that delivers content to adaptive bit rate clientdevice.

FIG. 1B depicts an example of an adaptive bitrate system configured witha multicast receiver for multicasting adaptive bitrate media segments toan adaptive bitrate client.

FIG. 1C depicts an overview of the architecture of an ABR system with anMABR server and MABR receiver elements for delivering ABR content to ABRclients.

FIG. 2 illustrates a transition from unicast to multicast in an adaptivebit rate system.

FIG. 3 illustrates a transition from multicast to unicast in an adaptivebitrate system.

FIG. 4 illustrates an example multicast stream delivery in the disclosedadaptive bitrate system.

FIG. 5 illustrates multiple example multicast stream deliveries in thedisclosed adaptive bitrate system with varying segment durations.

FIG. 6 illustrates an interaction between a multicast receiver andrequests for an adaptive bitrate stream in an adaptive bitrate system.

FIG. 7 depicts a flow diagram illustrating the interactions between anadaptive bitrate client, a multicast adaptive bitrate receiver and acable modem termination system in the case of a Data Over Cable ServiceInterface Specification (DOCSIS) transport network.

FIG. 8 illustrates example messaging from a multicast membershipperspective when attempting to access a multicast receiver and quickstream multicasts.

FIG. 9 depicts a flow diagram for the disclosed techniques of amulticasting adaptive bit rate receiver.

It is noted that while the accompanying Figures serve to illustrateembodiments of concepts that include the claimed invention, and explainvarious principles and advantages of those embodiments, the conceptsdisplayed are not necessary to understand the embodiments of the presentinvention, as the details depicted in the Figures would be readilyapparent to those of ordinary skill in the art having the benefit of thedescription herein.

DETAILED DESCRIPTION

Disclosed herein are techniques for a stripped multicast playout ofprior segments of a multicast session, such that the stripped multicastsegments are made available during the multicast session for a currentmulticast adaptive bit rate (MABR) media segment. Adaptive bitrate (ABR)streaming is based on Hypertext Transfer Protocol (HTTP) compared toprevious IP video streaming protocols that relied upon Real-TimeTransport Protocol (RTP) with Real-Time Streaming Protocol RTSP. ABRsystems may be designed to capitalize on intermediate HTTP cachingservers to help with the distribution of multimedia content from anOrigin Server (OS) to requesting clients.

In embodiments, an MABR receiver HTTP proxy delays or defers issuance ofspecific unicast HTTP ABR media segment requests while waiting forreceipt of stripped multicast media segments. For example, in responseto the receipt of configuration information that identifies that astripped multicast stream of the recent fragments is available, the MABRreceiver holds off responding to unicast requests from one or moreadaptive bitrate clients. In embodiments, the HTTP proxy receivesidentifiers, e.g., signals from an internal packet filtering, that aclient has issued a unicast request for either a MASTER manifest or avariant playlist uniform resource identifier (URL)s, resulting in theHTTP proxy creating a new internal state that waits for subsequent mediasegment URL requests. If the stripped multicast stream of the recentfragments are not available or has not been identified, the unicastrequest may issue without delay, e.g., without waiting for a receipt ofstripped multicast media segments. As the stripped multicast mediasegments are received, the HTTP requests queued in the proxy may bedelivered to the local ABR client.

FIG. 1A depicts a high level illustration of a representative adaptivebit rate system 100 that delivers content to adaptive bit rate clientdevice 134 via an internet protocol content delivery network. Anadaptive bit rate client device is a client device capable of providingstreaming playback by requesting an appropriate series of segments froman adaptive bit rate system 100 over an internet protocol contentdelivery network (CDN). ABR streaming relies on encoders or packagers toprovide multiple different bitrates for the same multimedia content(resulting in different quality levels of the same content). ABR clientsmonitor the network and player resources to determine which bitrate torequest when streaming content. The ABR client can switch to differentbitrates depending on the state of these resources.

The adaptive bit rate client device associated with a user or asubscriber may include a wide range of devices, including digitaltelevisions, digital direct broadcast systems, wireless broadcastsystems, personal digital assistants (PDAs), laptop or desktopcomputers, digital cameras, digital recording devices, digital mediaplayers, video gaming devices, video game consoles, cellular orsatellite radio telephones, video teleconferencing devices, and thelike. Digital video devices implement video compression techniques, suchas those described in the standards defined by MPEG-2, MPEG-4, ITU-TH.263 or ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding (AVC), theupcoming High Efficiency Video Coding (HEVC) standard, and extensions ofsuch standards, to transmit and receive digital video information moreefficiently.

As shown in FIG. 1A, the content provided to the adaptive bit ratesystem 100 may be in the form of a live stream 102, such as from a livecontent backbone, or a stored stream 104, such as a network digitalvideo recorder (nDVR) content storage or a VOD content storage. The livecontent backbone may be any number of possible cable or content providernetworks and manners for distributing content (e.g., satellite, fiber,the Internet, etc.). The example live content backbone 102 is anon-limiting example of a content source for adaptive bit ratestreaming, which may include any number of multiple service operators(MSOs), such as cable and broadband service providers who provide bothcable and Internet services to subscribers, and operate content deliverynetworks in which Internet Protocol (IP) is used for delivery oftelevision programs (i.e., IPTV) over a digital packet-switched network.

An adaptive bit rate system, such as the adaptive bit rate system 100shown in FIG. 1A, uses adaptive streaming to deliver content to itssubscribers. Adaptive streaming, also known as ABR streaming, is basedon a series of short progressive downloads applicable to the delivery ofboth live and on demand content. Adaptive bitrate streaming works bybreaking the overall media stream into a sequence of small filedownloads, each download loading one short segment, or chunk, of anoverall potentially unbounded transport stream.

As shown in FIG. 1A, a packager 100 includes an encoder 106 or 108, afragmenter 122, and a web server 130 (e.g., HTTP streaming server). Thepackager 100 outputs a manifest file 132 for adaptive bit rate metadata.The adaptive bit rate system delivers the manifest file andcorresponding content using adaptive bit rate techniques to an adaptivebit rate client device 134.

With ABR streaming, source content is encoded at different bitrates andthen split into small media segments. Generally, an adaptive bit ratepackager 100 is responsible for communicating with eachclient/subscriber and preparing (“packaging”) individual adaptive bitrate streams. The packager 100 is designed to fragment, or “chunk,”media files and to encapsulate those files in a container expected bythe particular type of adaptive bit rate client. Thus, a whole video maybe segmented in to what is commonly referred to as chunks or adaptivebit rate fragments. The adaptive bit rate fragments are available atdifferent bit rates, each of a finite duration. The adaptive bit ratesystem generates or identifies the media segments of the requested mediacontent as streaming media content. Along with the delivery of media,the packager creates and delivers manifest files.

ABR streaming may be based on a series of short Hypertext TransferProtocol (HTTP) progressive downloads applicable to the delivery of bothlive and on demand content. ABR systems can use HTTP as the transportprotocol and the ABR client can perform a media download as a series ofvery small files. The content is cut into many small segments (chunks)and encoded into the desired formats. As used herein, a chunk is a smallfile containing a short video segment along with associated audio andother data. In some cases these chunks may be standalone files, or maybe sections (i.e., byte ranges) of one much larger file. For simplicitythe term ‘chunk’ is used to refer to both of these cases (many smallfiles or fewer large files).

Adaptive streaming may use the Hypertext Transfer Protocol (HTTP) as thetransport protocol for these video chunks. For example, ‘chunks’ or‘chunk files’ may be short sections of media (e.g., 2 to 10 secondsections of media) retrieved in an HTTP request by an adaptive bit rateclient. The ABR client may use HTTP transfer to download each mediasegment URL.

FIG. 1A depicts the processing for both a live stream 102 and/or astored stream 104 may be input to a real-time encoder or a non-real timeencoder, 106, 108, respectively. The encoder converts whole contentstreams in to multiple streams at different bit rates. For example, anencoder is responsible for taking an MPEG stream (e.g., MPEG-2/MPEG-4)or a stored MPEG stream (e.g., MPEG-2/MPEG-4), encoding it digitally,encapsulating it in to MPEG-4 single program transport streams (SPTS)multiple bit rates formats, and preparing the encapsulated media fordistribution. An encoder typically encodes units of multimedia content(known as a Group of Pictures (GOP)) into media segments.

In the example shown in FIG. 1A, the live stream 102 may be encoded intothree transport streams, 110, 112, 114, each having a different bitrate. The live stream 102 may be a broadcast of multimedia content froma content provider. The stored stream 104 is transcoded in to threetransport streams, 116, 118, and 120, each having a different bit rate.The stored stream may be on demand content, for example.

Each media segment relates to a set duration of content (normally 2-4seconds), and gets encoded into multiple different bitrates. As shown inFIG. 1A, the resultant transport streams 110, 112, 114, 116, 118, and120 are passed through a fragmenter 122. The fragmenter 122 reads eachencoded stream 110, 112, 114, 116, 118, and 120 and divides them in to aseries of fragments of a finite duration. For example, MPEG streams maybe divided into a series of 2-3 second MPEG-4 fragments with multiplewrappers for the various adaptive streaming formats (e.g., MicrosoftSmooth Streaming, APPLE HLS). As shown in FIG. 1A, the transport streams110, 112, 114, are fragmented by fragmenter 122 into adaptive bit ratemedia segments 124 a-e, 126 a-e, and 128 a-e, respectively. Thetransport streams 116, 118, and 120, are fragmented by fragmenter 122into adaptive bit rate media segments 130 a-e, 132 a-e, and 134 a-e,respectively. The fragmenter 122 is also referred to herein as apackager, as the packager can include fragmenting the content intofragments and then encrypting each fragment using a content key. Inembodiments, media segments pass through a packager that also prepares amedia playlist or manifest metadata associated with the content, and mayalso get each media segment encrypted using DRM.

The subscriber may submit a request for content via an internet protocolcontent delivery network (CDN) that can deliver adaptive bit rate filesegments from a service provider or headend to end-user adaptive bitrate client devices. Referring to FIG. 1A, a content delivery network(CDN) can be communicatively coupled between an origin or web server 130and the client device 134, and may include one or more distributionnodes and/or content delivery servers (e.g., edge servers, or edgecache/streaming servers). The subscriber, via a respective client device134, is responsible for retrieving the media file ‘chunks,’ or portionsof media files, from the origin server 130 as needed to support thesubscriber's desired playback operations.

ABR streaming involves the use of a master manifest 132 to identify theavailable bitrates for multimedia content. The manifest 132 may alsoinclude metadata for the content itself or metadata associated with aparticular ABR client (e.g., if a specific manifest is issued perclient). The packager 122 may create the manifest files 132 as thepackager 122 performs the chunking operation for each type of adaptivebit rate streaming method. In adaptive bitrate protocols, the manifestfiles generated may include a variant playlist and a playlist file. Thevariant playlist describes the various formats (resolution, bit rate,codec, etc.) that are available for a given asset or content stream. Thevariant playlists may be ordered based on increasing resolution in themaster playlist/manifest. A client may begin with the 1^(st) variantplaylist, or the lowest resolution, when beginning playout of a new ABRstream, Depending on network and resource conditions, the client 134 mayincrement through the ordered variant playlists to in the order of theincreasing resolution, working up to the highest bandwidth variantplaylist. For each format, a corresponding playlist file may beprovided. The playlist file identifies the media file chunks/segmentsthat are available to the client. It is noted that the terms manifestfiles and playlist files may be referred to interchangeably herein. Theclient determines which format the client desires, as listed in thevariant playlist, finds the corresponding manifest/playlist file nameand location, and then retrieves media segments referenced in themanifest/playlist file.

Additional manifests may also be used, one for each available bitratecontaining the list of available media segments. The available mediasegments are listed in time order with the earliest media segmentspresent in the manifest corresponding to the start of content, and themedia segments at the end corresponding to the end of content. Eachmedia segment within the manifest files includes a unique URL thatcorresponds to the actual storage location of the multimedia content forthe specific interval the media segment covers.

The packager 122 creates the manifest files 132 to be compliant with anadaptive bit rate streaming format of the associated media and alsocompliant with encryption of media content under various digital rightsmanagement (DRM) schemes. Depending on the type of content beingstreamed, the manifest files may be prepared differently. For example,for content with a known duration, the set of manifest files (withdifferent bitrates) may include the complete set of required mediasegments to play the entire content. An ABR client 134 playing thiscontent may retrieve the master manifest initially, then requests thedifferent bitrate manifests depending on the network and computeresources available. As described above, the variant playlists may beordered in the manifest file in increasing resolution/quality. Theclient may simply move up and down through the master playlist whenselecting appropriate resolution video quality segments. Thus, theconstruction of manifest files varies based on the actual adaptive bitrate protocol.

The media segments listed in the different bitrate manifest files mayall be aligned using a common media segment sequence number. Forexample, media segment sequence numbers typically increment. Thus, if anABR client needs to switch bandwidth, it can simply download therequired media segment sequence number identified in a different bitratemanifest file. The switchover between consecutive segments, regardlessof the bitrate they are encoded with, is seamless, although themultimedia quality (predominantly video) is likely to change. Dependingon the number of available encoded bitrates, the quality change mayvary. Audio may be encoded with multimedia media segments, or may byencoded and available as a separate flow of audio media segments. Thesequence numbers of media segments carrying multimedia content and anyaudio content are synchronized.

Adaptive bit rate streaming methods have been implemented in proprietaryformats including HTTP Live Streaming (“HLS”) by Apple, Inc., and HTTPSmooth Streaming by Microsoft, Inc. adaptive bit rate streaming has beenstandardized as ISO/IEC 23009-1, Information Technology—Dynamic AdaptiveStreaming over HTTP (“DASH”): Part 1: Media presentation description andsegment formats. Although references are made herein to these exampleadaptive bit rate protocols, it will be recognized by a person havingordinary skill in the art that other standards, protocols, andtechniques for adaptive streaming may be used.

In HLS, for example, the adaptive bit rate system 100 receives a mediarequest from a subscriber 134 and generates or fetches a manifest fileto send to the subscriber's playback device in response to the request.A manifest file can include links to media files as relative or absolutepaths to a location on a local file system or as a network address, suchas a URI path. In HLS, an m3u8 format is used as a non-limiting exampleto illustrate the principles of manifest files including non-standardvariants.

The packager 100 can generate a manifest file that represents aplaylist. The playlist can be a manifest file that lists the locationsof the fragments of the multimedia content. By way of a non-limitingexample, the manifest file can comprise a uniform resource locator (URL)for each fragment of the multimedia content. If encrypted, the manifestfile can also comprise the content key used to encrypt the fragments ofthe multimedia content.

At the start of a streaming session, the adaptive bit rate client device134 may receive the manifest file 132 containing metadata for thevarious sub-streams which are available. The initial request may be forthe master manifest file that includes the variant playlist(s).Subsequent requests may be specific to a variant playlist that includesthe media segment URLs. Upon receiving the master manifest file, thesubscriber's client device 134 parses the manifest file and determinesthe chunks to request based on the variant playlist(s) in the manifestfile. The adaptive bit rate client device 134 can fetch a first mediasegment posted to an origin server 130 for playback from a selectedvariant playlist in the master manifest file. For example, the user mayuse HTTP Get or Byterange requests to request media segments. Then,during playback of that media segment, the playback device may fetch anext media segment for playback after the first media segment, and so onuntil the end of the media content. This process continues for as longas the asset is being played (until the asset completes or the usertunes away). As the manifests are complete, once the client retrieveseach bitrate manifest for a particular content, it is not required toretrieve them again for the duration of the playback of the contentidentified in the manifest.

Playback at the adaptive bit rate client device of the content in anadaptive bit rate environment, therefore, is enabled by the playlist ormanifest file that directs the adaptive bit rate client device to themedia segment locations, such as a series of uniform resourceidentifiers (URIs). For example, each URI in a manifest file is usableby the client to request a single HTTP chunk. The manifest file mayreference live content or on demand content. Other metadata also mayaccompany the manifest file.

For live content, which has no set duration, the manifest files may beprepared differently than for stored content. For example, for livecontent the manifest file may be continually updated as live media isbeing made available. The encoder/packager provides a subset of mediasegments, based on the most recently encoded set of available mediasegments in the manifest. Each manifest may include anywhere from 10media segments up to 60 media segments (or more). The encoder/packagerrefreshes the manifest files for every new media segment produced, whichbased on the media segment duration, e.g., every 2 to 4 seconds. Similarto the ABR client in the previous example, the ABR client retrieves themaster manifest and picks a bitrate manifest suitable for the networkand compute resources available. However, as the bitrate manifest isconstantly being updated by the encoder/packager, the ABR client isgenerally required to periodically retrieve the most appropriate bitratemanifest in order to gain knowledge of the next available mediasegments. Note that some ABR streaming protocols include metadata toalgorithmically determine the next available media segment URL, savingthe ABR client from this constant retrieval overhead. However, sometimesthe manifest file contains per player DRM keying information thatapplies to the next media segment, resulting in the player having torequest the manifest file repeatedly, e.g., one for every new segment.

As described above, after fragmentation, the fragments and manifestfiles (list of assets fragment) are placed on a content delivery networkserver, such as published to origin server 130. The content deliverynetwork logic may store the fragments according to an internal heuristiclogic algorithm, determining whether and where to store the content. Forexample, more popular content may be stored in local storage to decreasenetwork bandwidth usage and increase access speed. Less popular contentmay be stored in a central repository to reduce costs for fast storage.For example, content that may be stored includes on demand and networkDVR content. Live non-DVR content fragments may be distributed by thecontent delivery network but not stored.

It is noted that an ABR system may rely on URLs to uniquely identifyevery individual media segment, also sometimes referred to as RESTfulURLs. These URLs may maintain state information within the actual URLstring enabling intermediate HTTP proxy/caches to be deployed throughoutthe CDN network. The intermediate HTTP proxy/caches may automaticallycache any ABR segment that passes through the proxy, making it availablefor all subsequent requests that are received by that proxy. Such HTTPcaching may automatically result in the distributed storage of ABRsegments within the CDN without having to employ any explicit heuristiclogic algorithm.

The use of an adaptive bit rate system that chunks media files allowsthe client to switch between different quality (size) chunks of a givenasset, as dictated by network performance. The client has the capabilityby using the manifest file, to request specific fragments at a specificbit rate. As the stream is played, the client device may select from thedifferent alternate streams containing the same material encoded at avariety of data rates, allowing the streaming session to adapt to theavailable data rate. For example, if, in the middle of a session,network performance becomes more sluggish, the client is able to switchto the lower quality stream and retrieve a smaller chunk. Conversely, ifnetwork performance improves the client is also free to switch back tothe higher quality chunks.

A benefit of ABR streaming is that clients can react to varying networkcondition, and choose streaming bitrates that fit within the availablenetwork bandwidth. During the start of an ABR streaming session, theclients may begin with the lowest encoded bitrate in order to “sense”the network conditions and download media segments from thecorresponding bitrate manifest. For example, generally the client beginswith the first variant playlist listed within a master manifest file,the first variant playlist often the lowest resolution version of therequested content. If the network conditions allow (and other clientresources are available) the ABR client can attempt to switch to thenext highest bitrate available for the next ABR media segment. Forexample, during the start of an ABR streaming session, the ABR clientretrieves the master manifest for the ABR stream, and identifies thelowest bitrate media manifest. It retrieves the media manifest, andbegins requesting media segments from the list of available segments.Depending on how aggressive the client is, it may skip a next higheravailable bitrate to an even higher resolution playlist. The clientdevice is not bound by a strict order of variant playlists in the mastermanifest file. Similarly, the client device may drop to a much lowerbitrate in the event network/resource conditions change drastically.

Since adaptive bit rate media segments are available on the adaptive bitrate system in one of several bit rates, the client may switch bit ratesat the media segment boundaries. Using the manifest file to adaptivelyrequest media segments allows the client to gauge network congestion andapply other heuristics to determine the optimal bit rate at which torequest the media presentation segments/fragments from one instance intime to another. As conditions change the client is able to requestsubsequent fragments at higher or lower bitrates. Thus, the client canadjust its request for the next segment. The result is a system that candynamically adjust to varying network congestion levels. Often, thequality of the video stream streamed to a client device is adjusted inreal time based on the bandwidth and computer processing unit (CPU) ofthe client device. For example, the client may measure the availablebandwidth and request an adaptive bit rate media segment that bestmatches a measured available bit rate.

Per service the packager may be configured to performsegmentation/chunking for either all output adaptive bit rate formats ora subset of the output adaptive bit rate streaming formats. The packagermay create the respective manifest files. The chunk durations may bedifferent for each adaptive bit rate format, but they will all have tobe an integer multiple of the GOP size or key frame intervals. Howeverfor a given adaptive bit rate format the chunk durations will be thesame for all streams in an output stream group.

Various ABR streaming protocols identify segment download strategies, inadvance of any playout strategies. For live streaming, where the mediamanifest gets updated constantly as newly encoded media segments aremade available, the ABR client attempts to download the most recentmedia segments in order to fill its play-out buffer. Most clients whenstarting try to download the three or four most recent media segmentsand then play from the oldest segment, mostly in an effort to preventplayback stalls from occurring.

The client may maintain a temporary cache of a few fragments andrequests further fragments at optimally determined rates thusmaintaining continuity of playback even through changing networkbandwidth conditions. For example, the origin server 130 may storeseveral chunk sizes for each segment in time. The adaptive bit rateclient device 134 can predict the available bandwidth and requests thebest chunk size, e.g., using the appropriate URI. Since the client iscontrolling when the content is requested, this is seen as a client-pullmechanism, compared to a push mechanism where the server pushes thecontent. Using URIs to create the manifest file enables very simpleclient devices to retrieve chunks using web browser-type interfaces.

Multicasting ABR media segments over a transport network may conservebandwidth. For example, multicasting video file fragments may conservenetwork bandwidth. With multicast, a single source sends data tomultiple destinations at one time. For example, each TV channel may haveits own multicast. A multicast is joined when requested from asubscriber. Multicast makes the routers replicate fragments only whennecessary. If the multicast is not already joined in a service group,then the first join from any subscriber in that service group starts it,similar to how SDV works.

The Multicast ABR concept may be achieved through a “bump in the middle”approach. ABR media segments are retrieved from the ABR streamingnetwork by software and are multicast to multiple receivers using aunique multicast group for each ABR stream. In embodiments, only asingle media bitrate from the available media bitrates (e.g., mostcommonly the highest bitrate) is requested. In embodiments, multiplebitrates may be multicast.

FIG. 1B depicts an example of the system shown in FIG. 1A configuredwith a multicast adaptive bitrate (MABR) receiver 1002 for multicastingABR media segments over a transport network to the MABR receiver 1002using a respective multicast group for each ABR stream or version of anABR stream. As described in more detail below, the adaptive bit rateserver 1000 may multicast an adaptive bitrate stream where sourcecontent is encoded at multiple bit rates segmented into segments. One ormore servers in the ABR system 1000 may comprise the encoders andpackagers of the ABR system, generate and deliver manifest files toclients via a multicast server 1001. A second server 1002, the multicastreceiver, may receive the manifest file 132 generated by the firstserver and intercept requests from the adaptive bit rate clients 134.

The ABR client 134(a)-(n) may issue content requests, e.g., an HTTPrequest, for segments in the bitrate manifest file. The ABR client134(a) may request a manifest file 132 associated with the first mediaasset from an adaptive bit rate server 1000 in a content deliverynetwork 100. In response, the ABR client 134(a) receives a top-levelmanifest file 132 identifying a second level manifest file for each ofone or more available streams of the first media asset, each secondlevel manifest file associated with a bit rate and identifying mediasegments for a respective stream. The manifest file 132 from originserver 130 may also identify the most recent set of ABR segments. Forlive streaming, the media manifest gets updated as newly encoded mediasegments may be made available.

The master manifest file may identify to the ABR client 134 theavailable bitrates for multimedia content along with the metadata, andadditional manifests for each available bitrate include the list ofavailable media segments, wherein the list of available media segmentsare listed in time order with earliest media segment presentcorresponding to the start of content, and media segments at the endcorrespond to the need of the content, wherein each media segment withinthe manifest files 132 includes a unique URL that corresponds to theactual storage location of the multimedia content for the specificinterval that the media segment covers.

Thus, the ABR client 134 may receive the manifest file 132 withinformation of available streams at differing bit rates and the segmentsof those streams, and the ABR client 134 may request segments from afirst bitrate stream with option to switch streams to another one of themultiple bit rate streams.

The disclosed adaptive bit rate system shown in FIG. 1B may receive arequest for content by a client device and may deliverfragments/segments of an adaptive bit rate stream segmented by theadaptive bit rate server 1000 via a multicast upstream for access by aplurality of clients 134. The fragments may be encoded at a plurality ofbitrates.

The ABR client 134 may request to join a multicast session of theadaptive bit rate server 1000 multicasting from multicast server 1001.Thus, rather than the ABR client devices 134 sending/receiving segmentsstrictly via unicast requests 1010(a)-(n), the multicast server 1001 maymulticast content in multicasting sessions 1011(a)-(n) to which the ABRclients may join.

The ABR client 134 may require a plurality of media segments to bereceived before playout occurs and before joining an ABR multicast. Forexample, in an example startup case for ABR client 134(a), 3-4 mediasegments must be retrieved as fast as possible before being able toutilize MABR streaming option. A plurality of media segments may need tobe retrieved by or delivered to the ABR client 134 prior to enabling ajoin of an associated multicast stream. Where a multicast stream withfragments associated with a requested content is in midstream, mediafragments needed for initiating delivery to the client device mayinclude segments currently being multicast or previously multicast. Forexample, if the multicast session is multicasting mid-stream the requestcontent, the ABR client 134 may identify additional prior segments thatare desired for playout of the video (e.g., a channel change event mayrequire 3 most recent segments. The ABR client 134 may determine that itrequires one or more earlier media segments in the requested contentbefore playout may occur. For live adaptive bit rate streaming, the ABRclient 134 may attempt to download the most recent media segments tofill out playout buffer, and most try to download the three or four mostrecent media segments and then play from the oldest segment in an effortto prevent playback stalls from occurring.

As disclosed, a plurality of intercepting multicast receivers 1002 mayexist in the adaptive bit rate system. Each multicast receiver 1002 mayinclude a respective local HTTP proxy 1003, and each interceptingmulticast receiver 1002 may server a multicast group of ABR clients134(a)-(n), intercepting multicast content from the multicast server1001 and content requests from the ABR clients 134(a)-(n). Theintermediate caching by the multicast receivers 1002 facilitatesdistribution of multimedia content from the origin server 130 to therequesting client 134.

As disclosed, an ABR client's request for content from the manifest filemay pass through the local HTTP proxy 1003 in the MABR receiver 1002,which may receive the request and transmit it to the origin server 130.Disclosed herein are techniques for the ABR client 134 to receivecontent prior to the current multicast, as initiated by a servingmulticast receiver 1002. Thus, rather than requiring ABR client 134 tosend unicast requests 1010(a)-(n) to retrieve initial media segments(i.e., media segments prior to the currently available multicastsegment) from the origin server 130 (which would occur way toofrequently during channel change or ad-break periods), the multicastreceiver 1002 intercepts requests 1011(a)-(n) and fulfills the requestswhen possible

The ABR client 134 may receive requested media segments directly fromlocal HTTP cache 1003 if present. If the cache 1003 does not have anymatching media segments, HTTP media segment requests may be propagatedby the multicast receiver 1003 all the way through transport network toremote ABR origin server 130. The ABR client 134 may use HTTP transferto download each media segment URL.

In embodiments, the earlier segments are received at the lowestavailable encoded bitrate from the multicast receiver 1002 to determineif ABR client 134 can support timely delivery of higher encodedbitrates. However, it should be understood that the ABR client 134 maybe agnostic to the source of segment data multicast to the ABR client134 in response to its requests. For example, the ABR client 134 may beagnostic to the source of the segments received, whether the source isthe multicast receiver 1002 or the adaptive bitrate server 1000. Thus,in embodiments, the source of a segment delivery to the ABR client 134is transparent to the ABR client 134.

In implementations, there may be a separate MABR controller piece thatorchestrates configuration between the MABR server 1001 and the MABRreceivers 1002. Thus, an entity managing the MABR controller can manageconfigurations between the MABR server and MABR receiver.

FIG. 1C depicts an overview of an example architecture of an ABR systemwith an MABR server 10001 and MABR receiver elements 1003, 1006 fordelivering ABR content to ABR clients 134, described in more detailbelow in FIG. 7. As depicted, components of the ABR system 1000 shown inFIG. 1B are a part of the content delivery network 1000. The MABR server1001 is shown with a Unicast ABR client 1004 and Norm Server module1005, and the MABR receiver 1002 includes a NORM client 1006 and an HTTPproxy module 1003.

As shown in FIG. 1C, the MABR server 1001 may include its own ABR client1004 for retrieving ABR segments and doing a UNICAST→MULTICAST(1010→1011) operation. The MABR receiver 1002 performs theMULTICAT>UNICAST (1011→1012) requests, which includes collecting NORMmulticast packets from multicast 1011, reassembling the ABR segment, anddelivering the segment to the HTTP proxy/cache 1003.

As disclosed, the system may provide a stripped multicast playout of theplurality of media segments for which retrieval is needed. The multicastreceiver 1002 may include an HTTP proxy 1003. The MABR receiver 1002HTTP proxy 1003 may delay issuance of specific HTTP ABR media segmentrequests from ABR clients while waiting for receipt of the strippedmulticast media segments. While receiving the stripped multicast mediasegments, the multicast receiver 1002 may deliver HTTP requests in queueto the local ABR client 134. The multicast ABR receiver 1002 may useknowledge of the master and media manifest requests to trigger MABRrequests for a quick acquisition stream (QAS). The ABR media segmentsrequests for content issued by the local ABR client 134 may beintercepted by the multicast receiver and delayed by the MABR HTTP proxy1003 until a QAS delivers the ABR media segments. The QAS may contain astripped sequence of current and previous media segments. Further, theQAS media segments may be at the lowest encoded bitrate.

As described herein, the HTTP proxy 1003 may download a complete unicastmedia segment that was not available via multicast since it wastransmitted in a previous time interval. As part of the multicastreceiver 1002, the HTTP proxy 1003 may assist in the interception ofrequests from the ABR client 134 destined for origin server 130. TheHTTP proxy 1003 may get the MABR entity 1002 running with the specificABR stream the HTTP request identified by identifying the specific ABRstream being requested, identifying from previously receivedABR< >multicast mappings configuration which MABR and QAS multicastsegments are available, and identifying the appropriate QAS stream.

The media segments collected may be stored in the HTTP cache 1003 forlater use by other requesting ABR clients. The HTTP cache 1003 may beused to respond to lower resolution media segment requests.

In general, ABR clients 134 rely on HTTP traffic which can only bepoint2point UNICAST traffic. As disclosed, the operation of the QuickAcquisition Stream (QAS) enables delivery of previously multicasted ABRsegments using the carousel approach of much lower bitrate versions.

The multicast receiver 1002 may have mapping information associatingeach ABR stream to a specific multicast group, e.g., group 134(a)-(n).The mapping info may associate ABR streams to specific multicast groups,collect multicast media segments, and prepare them in a local HTTP cachein the HTTP proxy 1003. An HTTP cache may be used to serve ABR mediasegment requests from ABR clients local to the receiver device, the MABR1002 operating a local HTTP proxy 1003 configured with pattern matchingrules extracted from mapping info previously received.

The multicast of the media segments may be accomplished using UDP with arobust protocol to deal with retransmissions that may occur. Asdescribed above, the multicast ABR (MABR) receiver devices are providedwith mapping information to allow them associate ABR streams to specificmulticast groups. The MABR receivers may register their interest inspecific multicast groups (using a multicast group membership protocol).

Referring to FIGS. 1B and 1C, the MABR server is located upstream fromthe CMTS, and can be either in the CDN or just SOUTH of the CDN. Itrelies on the CDN for accessing the origin server 130 to retrieve ABRunicast content.

The MABR receivers 1002 may collect the multicast media segments andprepare them in a local HTTP cache, shown with the MABR receiver in thegatewayIt is noted that as used herein, the client device and cache arelocal in reference to each other, while being remote from the ABR system1000. For example, the MABR receiver 1002 is located local to the clientdevice 134, while the ABR client in the multicast server is locatedupstream or downstream from the client device and local cache. Generallythe MABR receiver is in the home, and is downstream from the CMTS. In aDOCSIS network, the MABR receiver may be most appropriately located in aDOCSIS gateway device, upstream from the ABR client 134.

It is noted that in the case of a DOCSIS deployment the MABR receiver1002 may never multicast data. In the case of the NORM protocol, thereis a multicast retransmission scheme that can be used to update multiplejoiners of the (S,G) if a receiver is missing a packet (thus stoppingtheir own retransmission requests being issued). However in DOCSIS, itmay not be possible to multicast data upstream and the retransmissionapproach relies on unicast instead of multicast.

In embodiments, the MABR receiver 1002 is embedded in a local gatewaydevice that the ABR client is connected to or relies upon, asillustrated in FIG. 1C, the gateway offering services to every possibleABR client in a home. The multicast data the MABR receiver 1002 receivesmay be reassembled into ABR fragments that are cached in a local HTTPcache 1003. Any device that requests an ABR fragment, that is stored orotherwise available from the HTTP cache 1003, may be served thatfragment from the home gateway.

Note that in some network transports (e.g., DSL), it may be preferableto locate the MABR receiver for serving multiple DSL gateways, i.e.,locating the MABR receiver at an aggregation layer, e.g., whererouters/switches connect to arrays of DSLAMs). In this mode, the “lastmile” delivery would be unicast, while delivery from the multicastserver could be just to the aggregation node(s)/routers.

As used herein, MABR is used in both the definition of the MABR server(the one that is responsible for requesting ABR data from origin serversand transmitting this data as a MULTICAST stream 1010) and MABRreceivers 1002 (that issue multicast JOINs 1013, 1014 to request receiptof the MABR multicast data, and who reassemble the received data torecreate the original ABR data for UNICAST transmission 1012 to localABR clients 134).

As used herein, the MABR server refers to the entity that performs themulticasting of ABR content. The MABR server 1001 may receive such ABRcontent for multicasting via another ABR client 1004 co-located with theMABR server. The MABR server 1001 performs the basic function (uponconfiguration) of requesting unicast ABR fragments (e.g., by using aninternal ABR client 1004 within its software, or by accessing the actualnative ABR fragments directly, e.g., using a WebDAV file system). TheMABR server 1001 may then split up the large ABR fragment into manysmaller MABR fragments that are multicast at 1010 to a specificmulticast group address (i.e. (S,G) address, where the letter Srepresents the IP address of the source, and G represents the groupaddress. Thus, the MABR server acts as two elements, an ABR receiver1004 for receiving ABR fragments for a specific ABR video flow, such asreceiving ABR fragments from an origin server, and a NORM transmitter1005 that sends multicast traffic to the network on the S,G IP address.As shown in FIG. 1C below, the multicast server 1001 includes both theunicast ABR client 1004 and the NORM server 1005.

An MABR receiver 1002 interested in (S,G) joins the multicast session1010 from the multicast server 1001, receives the multicast NORM data,processes the data (e.g., reassembly, error correction, retransmissionrecovery, etc), and then stores the received ABR fragments in a localHTTP cache 1003. The MABR receiver 1002 may join a multicast stream andreassemble the MABR fragments before unicasting them at 1012 to localABR clients 134 that are requesting the associated data. For example,the MABR receiver 1002 may collect the multicast fragments, recover theoriginal ABR fragment and push this into a local HTTP cache 1003. Alocal ABR client 134 requesting the same ABR video flow may also beserviced using unicast responses from the HTTP cache 1003.

In an example implementation, the local ABR client requests areintercepted using a transparent HTTP proxy function, checking to see ifthe request matches any cached ABR fragment; if a match is identified,the cached ABR fragment(s) is transmitted back to the local requestingABR client. The HTTP cache can serve ABR media segment requests from ABRclients local to the receiver device. The MABR receiver 1002 may operatea local HTTP proxy 1003 that is configured with pattern matching rulesextracted from the mapping information previously received. Inimplementations, the MABR receiver 1002 includes a NORM receiver 1006,an HTTP Transparent Proxy (not shown), and an HTTP Cache 1003, that arelocated together within a home gateway platform. It should be understoodthat the components may be devised in separate devices but may beincluded within the same hardware unit. Further, for an MABR receiverthat receives NORM fragments and recovers the original ABR fragment, itis possible that the MABR receiver deposits ABR fragments in to anon-local HTTP Proxy gateway. If the HTTP Proxy 1003 is inspectingtraffic for all incoming ABR HTTP GET REQUESTS then the HTTP Proxy maybe primed with specific patterns to look for, that the MABR receiver mayknow about first. The HTTP Proxy 1003 in this example may pushadditional control signalling to the MABR receiver regarding the HTTPGET REQYEST to determine if the MABR receiver should issue a JOIN (S,G)to trigger the MABR collection process.

As described above, the local ABR clients 134 may receive the requestedmedia segments directly from the local HTTP cache 1003 if they arepresent. In embodiments, the cache 1003 may respond to a client device134 even when it does not have a completely reassembled media segment,e.g., the cache 1003 may only have started to receive MABR media segmentdata related to the content requested by the client. For example, in thecase of the QAS where the stream will be delivered but has not yet beenreceived, the client device in the NON-QAS scheme does not need to passon the unicast request if the client device is aware that the clientdevice will receive the fragment from the MABR. However if the cachedoes not have any matching media segments, the HTTP media segmentrequest is propagated all the way through the transport network to theremote ABR Origin Server (or intermediate HTTP caches). Note that thereceipt of the media segment via unicast will also be delivered into andserved from the local HTTP cache in the event that another local ABRclient requires that specific media segment. The HTTP cache isconstantly maintained, and cached media segments are regularly removedfrom the cache in order to save cache space. The removal of mediasegments may be determined using configuration policy supplied to theMABR/HTTP cache subsystem.

The use of MABR can significantly reduce the amount of unicast bandwidthrequired to deliver ABR streaming of linear/live content. MultipleService Operators (MSOs) that already deliver linear content usinglegacy MPEG2-TS based broadcast transport systems are able to takeadvantage of the broadcast/multicast nature of their transport networksto efficiently deliver ABR streaming using MABR. Traditionally, everyABR streaming session consumes single-use unicast bandwidth per ABRclient. In a broadcast/multicast transport network, MABR transparentlyreduces the bandwidth demands of multiple unicast ABR clients watchingthe same linear/live content down to a single ABR bandwidth demand perbroadcast/multicast domain.

However, currently the MABR solution does not cope with the initialstartup unicast bandwidth requirements of ABR clients. Further, whencompared to a linear MPEG/QAM delivery, the ABR client starting at theLOWEST resolution may take 2-3 segments of x segment duration to arriveat the main resolution.

These shortcomings are important as the initial startup bandwidthrequirements exist every time an ABR client decides to switch from oneABR linear stream to another. Note that even if an MABR stream isalready being transmitted into the transport network, when a new MABRreceiver wants to use multicast it is quite likely to have missed aportion of the currently multicast media segment, and will have to passon a unicast request for this missing media segment, before being ableto switch over completely onto the MABR stream. In this case the ABRclient may end up having to get unicast delivery for three or four mediasegments. This statistic is not much by itself, but becomes a muchgreater concern when large numbers of ABR clients move in unison witheach other, possible at linear program switching (e.g. when 6 o'clocknews comes on) or during advertisement breaks (anywhere from 4 to 6 anhour). When providing an ABR based linear IPTV solution, thisinstantaneous unicast bandwidth growth can be significant depending onthe number of subscribers.

As described in more detail below, the QAS may contain a strippedsequence of current and previous media segments, typically at the lowestencoded bitrate, though the disclosed techniques may be implemented forany resolutions. Normally the MABR system delivers the current mediasegment for an ABR stream during the segment duration (typically 2 to 4seconds for live streaming). The multiple media segments associated withthe QAS are delivered within the same segment duration, meaning thatthere could be four or five media segments delivered in this time frame.In embodiments, the arrangement of media segments delivered during eachsegment's duration is selected so as to ensure an MABR receiver has thegreatest opportunity to retrieve three to four media segments withouthaving to use unicast.

FIG. 2 illustrates a transition from unicast to multicast in an ABRsystem. FIG. 2 depicts an example of a partial multicast data receivedin the current segment duration and how the partial multicast data canbe utilized by sending a unicast request for the missing data. Asdescribed below, FIG. 2 exemplifies how the HTTP Proxy and the MABRentity can collaborate to minimize/exclude the requesting multicast dataalready received by the MABR entity through the use of targeted HTTPunicast range requests.

As shown in FIG. 2, three bitrate streams are identified, 202 a, 202 b,and 202 c. The three different bitrates represent timelines fordifferent transmissions in action. 202 a refers to a much fastermulticast transmit of a media segment, compared to 202 b, which refersto a much slower multicast transmit of the same media segment. 202 crefers to the unicast response of the same media segment to the HTTPProxy. Thus for purposes of illustration, 202 a represents a high speedmulticast timeline, 202 b represents a multicast timeline that is slowerthan 202 a, and 202 c represents a unicast timeline, For purposes ofillustration, described below are examples described with reference tobitstream 202 b, but it should be understood that alternate bitstreamsmay apply. As shown for bitstream 202 b, the HTTP Proxy can interruptits unicast download of media segment 218 a, 218 b by collecting thepartial norm object 213 b. The system may be configured to transmit ateither the high speed transmission at 211, 216 or the lower speedtransmission at 213 a, 213 b, 217.

The ABR client issues an HTTP GET request 203 for fragment Frag#n inresponse to the HTTP proxy forwarded unicast request for fragment #n 214that occurs just before fragment #n+1 is multicast at 211 or 213 a, 213b.

The Rx MCP (mcast #n) 204 represents the receipt of a mini carousalprotocol (MCP) that carries a current list of available IP Multicaststreams in the network. The Silent JOIN mcast #n 205 refers to the MABRsimply starting to listen to the IP multicast data associated with theinterested multicast stream, without having to issue multicastmembership signaling. At 206, the MABR entity already knows that itpartially received multicast data at 213 b, and determines how much ofthe data the MABR was missing. The MABR forms a HTTP request for abyterange that covers the data from the start of the missing mediasegment up until the start of the received multicast data (alreadyreceived). At 207, the HTTP Proxy combines the unicast response with themulticast data, resulting in a single media segment #n+1 being produced.In response to ABR client requests for segment #n+1, the HTTP proxyresponds to ABR client requests for segment #n+1 with the combinedunicast/multicast media segment at 208.

The bandwidth calculation represented at 209 represents a determinationof how much unicast bandwidth was saved by combining HTTP unicastbyterange requests with already received multicast MABR data. The MABRentity at 210 has managed to collect an entire media segment frommulticast, and stores it in the HTTP cache for layer use by otherrequesting ABR clients.

The media segments depicted by 211 and 216 illustrate a media segmentbeing multicast at a much higher bitrate 202 a, but for a much shorterduration. The missed multicast data 212 is an example of data missed bythe MABR entity at a point in time when it began listening for themulticast data. As shown in this example, if the data was beingtransmitted at the bitrate of the 211 media segment, the MABR missed outcompletely. In another example, assume that the system was transmittingthe media segment at the much lower (but longer duration period) of the213 a media segment, and then the MABR entity would have been able toreceive a partial media segment 213 b. The media segment 213 a definesthe exact number of bytes not received by the MABR entity, whereas mediasegment 213 b depicts the exact number of bytes received by the MABRentity.

The media segment 214 represents a complete unicast media segment #nthat the HTTP proxy had to download (i.e., it was not available frommulticast as it was transmitted in the previous time interval).

As described above, the system may be configured to transmit at eitherthe high speed transmission at 211, 216 or the lower speed transmissionat 213 a, 213 b, 217. The media segments 216, 217 at n+2 represents thesame media segment that was transmitted at 2 different speeds 215, withhigher speed bursting of the multicast segments 216. Thus, the mediasegment 216 is a high speed multicast of segment #n+2 (as compared to aslower version of the same data at 217). The media segment 217 is a lowspeed multicast of segment #n+2.

An amount of data at 218 a represents the data requested by HTTP proxyusing HTTP unicast byte range request. In embodiments, segment 213 a and218 a represent the same missing MABR multicast data that the HTTP Getrequest 206 has determined must be requested. The data at 218 brepresents that data received by the MABR entity (213 b). The data 218 bis collated with 218 a to form a complete media segment.

Referring now to 220, 220 illustrates buffering to demonstrate anembodiment for which it is essential to collect the MABR data, even ifthe start of the MABR data has been missed (see 213 a). In an exampleembodiment, to allow the MABR entity to identify the details of the MABRdata being transmitted, additional periodic information must betransmitted with the MABR data, providing details to the MABR datalength, the URL it refers to, the bitrate, etc., which is data that canbe used by the MABR entity to uniquely identify this media segment.Thus, in embodiments the buffering of multicast by the MABR entity at220 is necessary. The data is buffered and the associated media segmentis recovered, along with identifying information, such as correspondingURL, that is subsequently handed over to the HTTP Proxy to allow itstore the media segment in the cache, and to be able to perform URLfiltering to match incoming client ARB requests to the locally cacheddata.

FIG. 3 illustrates a transition from multicast to unicast in an ABRsystem. FIG. 3 demonstrates an embodiment in which the MABR entityrelies upon the multicast data to fill the HTTP cache. As describedbelow, the MABR entity may be suddenly interrupted as the multicast datastops. In this condition, the MABR entity can take advantage of recentlybuffered multicast data, and unicast request (byte range request) themissing multicast data. With the buffered multicast data, the MABR canissue only a unicast request (byte range request) to request the missingmulticast data.

As shown in FIG. 3, three bitrate streams are identified, 302 a, 302 b,and 302 c. Bitstream 302 represents a high speed multicast timeline.Bitstream 302 b represents a slower multicast timeline. Bitstream 302 crepresents a unicast timeline.

At 303, the MABR entity, once joined to a multicast, constantly buffersthe MABR data in order to reconstitute the transmitted media segment.The MABR entity receives an updated Mini Carousel Protocol (MCP) messageat 304 that indicates that the MABR multicast stream has been removed.At 305, the MABR entity performs a silent leave, where it now no longerrelies on the receipt of multicast data.

At 306, the MABR entity identifies how many missing bytes are requiredto complete the in-progress media segment (314 a), and advises the HTTPproxy to issue a HTTP unicast byte range request for the missing data(314 b). At 308, the HTTP proxy receives the missing data (315 b) as aunicast response. At 309, the HTTP proxy reconstitutes the media segment314 a/315 a (#n+1) with the newly received missing unicast data (315 b).At 310, the HTTP proxy responds to ABR client requests for segment (315a/315 b) #n+1 with the combined unicast/multicast media segment.

The high speed transmission of media segment #n+1 is represented by 312.Multicast data 313 never arrived at the MABR entity and is to beretrieved using a unicast byte range request. The multicast datareceived by the MABR entity from the slow bitrate multicast transmissionis at 314 a, and 314 b is the notional missing data that prevented theMABR entity from producing a complete media segment (#n+1) frommulticast data.

The data 314 a is at 315 a is effectively a copy of 314 a data that hasbeen passed to the HTTP proxy, so that it can combined 315 b with it tocomplete the media segment, and the data 315 b is the unicast rangerequest data that the HTTP proxy has to retrieve to complete the mediasegment (#n+1). The data 316 represents the complete media segment #n+2that was delivered to the HTTP proxy as a result of the unicast http getrequest at 317.

An HTTP proxy unicast get request 317 is issued for media segment #n+2.Following 317, the HTTP proxy receives all HTTP requests from local ABRclients, and proxies them through. Any data received by the HTTP proxywill be cached, allowing other local ABR clients to access thatinformation if they subsequently request the same ABR stream.

It should be noted as well that in the case of the MABR multicast streambeing stopped midflight and the MABR receiver having to switch back overto unicast streaming, the MABR receiver can close out on the currentmedia segment by only issuing a unicast HTTP request for the missingsegment bytes, as illustrated below.

As illustrated, it is desirable, particularly in the example edge casesshown in FIGS. 2 and 3, to maximize the use of the current segment beingmulticast. However, these still rely upon unicast HTTP requests to seekout performance, leading to increased unicast bandwidth.

Embodiments are disclosed that address a startup case of ABR clients,where three or four media segments must be retrieved as fast as possiblebefore being able to utilize the MABR streaming option. Embodiments aredisclosed that use a stripped multicast playout of the three or fourmost recent segments during the playout of a current MABR media segment.In embodiments, the MABR receiver HTTP proxy delays or suspends issuanceof specific HTTP ABR media segment requests while waiting for receipt ofthe stripped multicast media segments. In embodiments, the HTTP Proxyholds off replying to the specific requests received until the strippedout segments are received; whereupon the HTTP proxy immediately repliesto the waiting ABR client with the correct response. Thus, as thestripped out multicast media segments are received, the HTTP requestsqueued in the proxy are delivered to the local ABR client. It is notedthat the MABR/HTTP proxy will know the difference (via configuration) asto when the stripped option is in use or not. When it is not in use, andthe MABR Receiver/HTTP proxy identifies that the requested ABR fragmentsare not in the cache, and in some instances may never be multicastagain, The MABR receiver HTTP proxy forwards the ABR UNICAST request upto the ABR server/origin server to complete the request (passing theresults on to the local ABR client).

It is noted that while three or four media segments are described as therequisite number of segments to be retrieved to be able to access amulticast stream, the number of requisite segments may be more or less.Currently, in HLS implementations, the HLS specification indicates thatthe client should not choose a segment which starts less than threetarget durations from the end of a playlist file. As disclosed herein,the QAS may end up transmitting the four most recent fragments during acurrent fragment duration (not just three), which would satisfy the HLSrequirement. However, it should be understood that client devices maynot follow or may ignore the HLS specification suggestion. For example,an HLS player may retrieve fragments from within the three most recentfragments, sometimes even starting with the most recent fragment.

In embodiments, the MABR receiver uses knowledge of the master and mediamanifest requests (requested by the local ABR client) to trigger MABRmembership requests for Quick Acquisition Stream (QAS) for the requestABR stream. The ABR media segment requests issued by the local ABRclient are intercepted and delayed by the MABR HTTP proxy until the QASdelivers the ABR media segments.

The QAS contains a stripped sequence of current and previous mediasegments, typically at the lowest encoded bitrate. Normally the MABRsystem delivers the current media segment for an ABR stream during thesegment duration (typically 2 to 4 seconds for live streaming). Themultiple media segments associated with the QAS are delivered within thesame segment duration, meaning that there could be four or five mediasegments delivered in this time frame.

The arrangement of media segments delivered during each segment durationis selected to ensure an MABR receiver has the greatest opportunity toretrieve the three to four media segments without having to use unicast.

FIG. 4 illustrates multicast stream with segments with 2 second segmentdurations. The Manifest={A, B, C} 402 a represents a manifest fileidentifying segments A, B, and C. As segment D becomes available, themanifest file is updated with segment D at 402 b, and similarly updatedat 402 c when segment E is available, etc. As described, the multicaststream associated with each manifest 402 a, 402 b, 402 c, 402 d, 402 eis streamed to reduce significantly the amount of unicast bandwidth thatindividual ABR client devices need to receive/display media content. Forexample, if 500 client devices are tuned to Channel #1, each clientdevice could be consuming 1 Megabits of bandwidth for a unicastconnection. Using a multicast representation of Channel #1, thebandwidth can be reduced to 1Megatbits that all 500 users can access.However, if a client device requests a channel change or requests tojoin a stream that is not at the initial point in the manifest, themulticast solution does not allow or causes unacceptable delay for theclient device to join the stream. For example, when a set top boxchanges a channel during 402 a, the STB has already missed some ofsegments C and segments A and B have already been multicast. The STBneeds all three segments, so the STB issues a unicast request. If a lotof client devices issue a unicast request at the same time, theresulting unicast burst of data consumes much of or exceeds theavailable bandwidth.

It is noted that joining a multicast stream via an explicit join by oneor more subscribers. The notion of silent join is that a device isinformed about the active list of multicasts (e.g., via a control planmessage, possibly conveyed as a “carousel”), which allows clients toavoid having to perform explicit joins. The join by client devices tocertain multicasts may be determined a priori based on heuristicsdetermined by gathering channel change statistics over time, where anexplicit join is not required by the client device.

Disclosed are embodiments for transmitting another set of unicaststreams, cycling through the segment periods, such that when a clientdevice changes a channel it only has to wait a short time to collect thefragments it needs to play the video. In other words, no unicastbandwidth request is necessary where the multicast tier with both asteady state stream and additional streams available for the channelchange state. In embodiments, the additional shorter segment multicaststreams eliminate the need for unicast bandwidth.

Referring to the first manifest file 402 a shown in sequence in FIG. 4,segment C 403 a has a duration of 2 segments. In this example, thesegment durations are 2 seconds, but it should be understood that thesegment duration may longer or shorter. In scenarios, if a client wantsto join the multicast stream during the playout of segment C during 402a, the client must also get segments A and B. For example, a client isgenerally required to build up a sufficient buffer of segments to beable to contend with network congestion or packet loss. Without such abuffer, the client may “under-run” and run out of video data to playbackwhile waiting for some future segments to be delivered. However,segments A and B have already been transmitted in the multicast streamand are no longer available to the client via the multicast data.

Disclosed herein is a Quick Acquisition Stream (QAS) technique forenabling a client device to join a multicast stream without significantdelay. The encoder and fragmenter in the ABR packager 100 generatesegments/fragments for each of the 2 second self-contained pieces ofvideo. Thus, every 2 seconds in this example a QAS file is generated andtransmitted as a multicast. The example QAS 404 depicted in FIG. 4includes segments in 0.4 second durations.

As shown in FIG. 4, the highest encoded bitrate segment is deliveredconcurrently with the QAS that is delivering five 2-second segments ofthe lowest encoded bitrate. The ordering of QAS media segments is shownin the ordering pattern, where N is the current media segment beingserviced. It is noted that the ordering presented for the 5 QASfragments during a single fragment-duration may be used to help with theMABR gateway (GW) retrieving fragments from the QAS multicast fairlyefficiently, and the spacing/number of repeated fragments helps on themulticast transmitter side.

With the introduction of MABR, once a fragment has partially beentransmitted, then the MABR receiver may be unable to receive the rest ofthat fragment. The disclosed QAS techniques enable an MABR receiver totune to a lower bitrate carousel of previously transmitted ABR fragmentsthat can be used in place of passing up UNICAST requests to the originserver from the ABR clients (which would result in a bursted use orincrease in unicast bandwidth demand. The disclosed QAS techniques mayminimize or eliminate such bursted bandwidth demands.

In embodiments, if the QAS is generated with the main resolution, andthe manifest file is adjusted to only show the MAIN resolution variantplaylist, the delay may be less. In embodiments, the HTTP Cache mayrespond to a low resolution media segment request with a main resolutionmedia segment response, thereby faking a response so the client receivesa much better resolution media segment.

Further disclosed are techniques for a streaming approach of mediasegments that uses the same MABR delivery system described above, butproviding a method for efficiently delivering media segments using MABR.An example implementation is described below where the ABR clientsrequires multiple (three to four) media segments to be received beforeplay-out occurs, illustrating how the disclosed techniques can provide amethod for efficiently delivering these using MABR.

ABR streaming relies upon providing media segments that have beenencoded with different bitrates. The startup of most ABR clients resultsin the request of multiple (three to four) media segments, at the lowestavailable encoded bitrate (often the first bitrate listed in themanifest file) in order to discover network conditions in determine ifthe network can support the timely delivery of the higher encodedbitrates.

In the MABR system, the most recent media segment is multicast once itbecomes available in the media manifest. Any ABR client will likelyrequest the three previous segments and then the most recent segment.There is very little likelihood that the MABR receiver can use thecurrent media segment being multicast when it joins the multicast, as itwill have missed some portion of the start of the media segment.

In this scenario it is possible to have the MABR receiver perform aunicast HTTP request with a specific byte range covering the missingbytes of the current multicast media segment (rather than having torequest the entire media segment). The MABR receiver can make a decisionon this based on the percentage of already received multicast mediasegment data. However, this unicast HTTP request for the higher encodedbitrate media segment could have a significant impact on unicastbandwidth demands in the transport network compared to requesting thelower encoded bitrate.

In embodiments disclosed, an MABR receiver uses knowledge of the masterand media manifest requests (requested by the local ABR client) totrigger MABR membership requests for Quick Acquisition Stream (QAS) forthe request ABR stream. The ABR media segment requests issued by thelocal ABR client are intercepted and delayed by the MABR HTTP proxyuntil the QAS delivers the ABR media segments.

It is noted that external policy decisions may dictate which ABR streamswill be made available as multicast streams, and this information can bemade available to all MABR receiver devices.

Multiple stripping patterns and number of QAS segments per segmentduration can be used. FIG. 5 depicts several examples represented by 505a-e, 506 a-e, and 507 a-e with varying segment durations. For example,FIG. 5 shows several examples, starting at 5 fragments per duration downto just 2 fragments per duration for the QAS stream. The ordering may beselected to optimize the MABR gateway (GW) retrieving the most recent(e.g., last three or four segments) fragments quickly, without theotherwise longer delay to retrieve the segments.

While ABR video is normally unicast between the origin server and theclient, the disclosed techniques use a master manifest file thatidentifies a plurality of different bit rates (variant manifest files)that may be multicast to a plurality of ABR clients. When a clienttrying to stream the content, the client typically starts with thelowest bit rate manifest to quickly retrieve the content, and thenupdate to a higher bit rate based on an analysis of the systemresources.

In embodiments, higher resolution fragments are transmitted instead oflower resolution fragments. The tradeoff is an increase in bandwidthwhile allowing the client to jump to the higher or maximum resolutionfaster. For example, the higher resolution could be transmitted usingthe quick acquisition stream (QAS) approach disclosed herein, inaddition to the higher resolution fragments being delivered on thenormal or baseline multicast transmission.

As disclosed, the multicast ABR receiver can deliver ABR video flow andalso allows users to request ABR fragments by delivering over amulticast stream to a local cache. The multicast is normally streamed atthe highest bit rate, so the client device can pull segments directlyfrom a local gateway cache. In embodiments, the source of the fragmentsis transparent to the client device. Thus, ABR is still used, but one ofthe bit rates is being delivered to a local cache that is closer to theclient. The client still makes requests as in a conventional ABR system,but the local cache or gateway provides access to a bit rate, e.g., thehighest bit rate, and a local stream. Pre-caching may be done based onpredictions of content that will be requested, thereby pre-caching thelocal/gateway cache for quicker access by the client devices (e.g., ahighly anticipated athletics event content (e.g., Olympics, achampionship athletic event, a government official's speech) may bedelivered to the local gateway cache and is made available, even ifclient devices with access never request the content).

In embodiments, an ordering of the QAS segments is used to ensure thatan MABR receiver joining at any specific time during the current MABRmedia segment multicast can retrieve the necessary segments within afixed time.

FIG. 6 illustrates the interaction between the MABR receiver and therequests for the ABR stream (including manifest request). Manifest files602 a-602 e depict the manifest files associated with a content; themanifest file is updated with segments as they become available. FIG. 6illustrates an example series of events an embodiment of the use of theQAS goes through in order to avoid unicast traffic requests beingforwarded from the ABR client through the HTTP proxy to the network.

For purposes of illustration, FIG. 6 depicts an example time sequencechart covering multiple 2-second segment boundaries. At the start ofeach boundary a new manifest file is output, listing a newly createdmedia segment. Note that the total bandwidth consumed by the QAS streamin this example is based on a number of variables. A) the duration theQAS stream is present, B) the duration of each media segment, C) thebitrate of the QAS media segments, D) the number of QAS media segmentstransmitted per (B).

In the case of a 14 second QAS stream transmission, with 2 second mediasegment duration, transmitting 1 Mbps media segments (for a total of 2Mbps per segment duration), for 5 QAS media segments per duration, theoverall bandwidth consumed is

((A)/(B))*(C*B)*D=70 Mbps total or an additional 5 Mbps extra for 14seconds. If 100 clients change channel during the 14 second interval,the total bandwidth consumed would be 100*3*1=300 Mbps total or anadditional 21 Mbps for 14 seconds (i.e. over 16 Mbps more) FIG. 6depicts an example of the disclosed multicast adaptive bitrate receivertechniques for accessing prior data on behalf of one or more ABRclients. It is noted that manifest files 602 a-e represent each manifestfile and/or updated manifest file produced at the start of each new 2second boundary, including a reference to the actual segment(a,b,c,d,e,f,g). The manifest file is continuously updated with mediasegments as they become available. For example, 602 a represents themanifest file when segments A, B, and C are available, and manifest file602 b represents an updated manifest file that now also includes segmentD.

The media segments 603 a-e each represent a current media segment beingmulticast by the MABR solution during the respective time period orsegment duration. In an example, the segment durations are 2 secondslong. Thus, during the time period or segment duration at 603 a, segmentC is being multicast to ABR clients in the multicast ABR receiver'smulticast group. Even though each duration represented by 603 a-e isillustrated to extend for the duration of the 2-second segment duration,the delivery of each media segment may vary depending on the bitrate(e.g., the duration may be shorter where the bitrate of the mediasegments is higher).

Segments 606 a-606 e depict an example of transmitting quick streamsegments during the multicast of a current media segment, illustratingthat a plurality of segments may be quick streamed during the multicastof the current media segment. For illustrative purposes, 0.4 secondintervals are between 605 a-n, each interval relating to ⅕ of the twosegment duration for the current multicasting media segment C, and eachinterval corresponding to five segment (e.g., segments 606 a-6060 e)transmissions that occur per two segment duration. As described above,the quick stream segments may be streamed in a particular order orpattern. Quick stream segments 606 a-e portray an example cyclicalpattern that is being used to transmit the segments via a QAS stream. Inthis example, 4 unique segments are transmitted during this interval,with segment A (606 a/d) being repeated twice. The ordering pattern forsegment n is (n−2, n−3, n−1, n−2, n). Overall, each segment transmittedusing the five-segment instance of this QAS scheme is transmitted amaximum of 5 times, as shown by the full depiction via this QAS schemeof the transmission of segments C and D. Even though the QAS segmentsare presented in the diagram as extending for a 0.4 second duration (605a), this is purely illustrative; the QAS segment may be transmitted at amuch higher bitrate resulting in a much shorter transmission time. It isalso possible that the QAS media segments can be taken from any of theavailable bitrates presented in the ABR manifest, including the highestbitrate.

The multicast ABR receiver may receive at 607 a an ABR< >MABR Multicastmapping(s) that may inform the MABR which segments and/or streams areavailable as an MABR multicast or QAS multicast.

At 607 b, the MABR may receive a client ABR request for a correspondingmanifest file for an ABR stream of interest.

In response to the receipt of the ABR< >MABR multicast mapping(s) andthe data received in the MABR mappings information, the multicast ABRreceiver may request to join a multicast quick stream at 608. Note thatthe join is shown occurring at an interim point in the multicast ofsegment C, which is after the start of the multicast transmission ofsegment 603 a. Thus, the MABR entity cannot receive this media segment Csince it was already transmitted or partially transmitted.

In order to provide an ABR client with the proper segments of therequested stream, such as segment C which is already being multicast andprior segments to increase the quality of the startup and playout of thestream at the ABR client, the multicast ABR receiver requests to join aquick stream multicast. In response the manifest file received at 607 b,and the data received in the MABR mappings information, a quick streammulticast session is joined. At 610, the MABR entity identifies that theinitiation point of the QAS stream received by the MABR receiver is atan interim point of a QAS media segment, and therefore the MABR receiverdid not receive a complete segment at the start of the quick streammulticast session. This partial segment may be discarded.

By 611, assume that the ABR client has retrieved the ABR Manifest file,determined the required media segments to request, and issues its firstrequest for the media segment, e.g., media segment A. The HTTP Proxyreceives this request and queues a response pending the receipt of theQAS media segment. For example, at 612, once the MABR entity has fullyreceived QAS media segment A (621) it passes this to the HTTP proxy whoresponds to the ABR client request at (611) with the transmission ofquick segment A.

It is noted that the ABR client may not need to retrieve all segmentsfor a particular stream that extend to the beginning of the stream, butat least enough to sufficiently playout segments at the ABR client withbuffering options and a more seamless playout. In this example, becausethe request for the content is made while media segment C is currentlymulticasted, the ABR segment requests receipt of content beginning atsegment A so as to have 2-3 segments in queue.

At 613, the ABR client requests media segment B. Based on this QASstream arrangement, quick stream segment B was received prior to quickstream segment A. Thus, at 614, since the MABR entity has alreadyreceived QAS media segment B (620) and delivered quick stream segment Bto the HTTP Proxy, the HTTP proxy is able to immediately reply to theABR client by transmitting segment B.

Similarly, at 615 the ABR client requests the next media segment C. At616, the MABR entity has already received QAS media segment C (622) anddelivered this to the HTTP Proxy, and thus the HTTP proxy is able toimmediately reply to the ABR client by transmitting segment C.

At 617, the ABR client requests the next media segment D. Assume that atthe point of the request for segment D, the MABR entity has received theMABR media segment (603 b) and decides to deliver the MABR media segmentto the HTTP Proxy such that the HTTP proxy may immediately reply to theABR client with the segment 603 b rather than the quick stream segmentD. Thus, at this point the MABR entity has managed to transition to theMABR media segments successfully and no longer requires access to theQAS stream. Thus, the MABR entity can leave the QAS stream.

In accordance with the QAS stream arrangement depicted in FIG. 6 forpurposes of illustration, the segments are quick streamed during thereceipt of segment D 603 b in an order of segment B, segment A, segmentC, segment B, and segment D. This QAS arrangement is explained here toprovide examples of how each quick stream media segment may be processedby a multicast ABR receiver. QAS media segment B 620 is transmitted tothe network, and collected by the MABR entity; it is subsequentlydelivered to the HTTP Proxy, and serves as the response to 614. QASmedia segment A 621 is transmitted to the network, and collected by theMABR entity; it is subsequently delivered to the HTTP Proxy, and servesas the response to 612 QAS media segment C 622 is transmitted to thenetwork, and collected by the MABR entity; it is subsequently deliveredto the HTTP Proxy, and serves as the response to 616. QAS media segmentB 623 is transmitted to the network, and collected by the MABR entity;it is identified as a duplicate to (620) and subsequently dropped (625).And, QAS media segment D 624 is transmitted to the network, andcollected by the MABR entity. However, in this instance, because theMABR entity has already begun to receive MABR media segment (603 b), theMABR may discontinue collection of the QAS media segment D (624). Atthis point the MABR entity may cease the collection of the QAS stream,and may leave the QAS multicast (618 comment);

The drop of quick stream segment B at 625 illustrates an example wherebythe MABR entity identifies that it has already received the same QASmedia segment (620) as it is currently receiving (623), and decides tono longer collect that segment 623 (i.e. it drops it). At 626, anexample of the completion of collection of quick stream segments by theMABR is depicted, in which case the MABR entity may successfully receivethe entire MABR media segment (603 b) and delivers this to the HTTPProxy. The QAS stream, if continued, is illustrated by 604 to illustratethe pattern that would be continued if the MABR entity were to remainjoined to the multicast quick stream. The continued QAS stream as shownat 604 illustrates how the QAS stream may be continued and what quickstream segments would be available during the multicast or availablemulticast of segment G 603 e.

The use of the QAS stream option allows the MABR receiver to pick outthe requested ABR media segments without having to resort to usingunicast HTTP requests. The above example shows how the MABR receiver cansupply the requested media segments to the requesting local ABR clientwithin 1.2 seconds without having to resort to any unicast media segmentretrieval.

The QAS option allows flexibility in terms of the stripping pattern andnumber of previous media segments to transmit. The stripping influenceshow much delay the MABR receiver may experience while holding back HTTPproxy requests.

The QAS option adds an additional multicast membership join to theprocessing stages of starting an ABR stream.

FIG. 7 depicts a flow diagram illustrating the interactions between theABR client, the MABR receiver and a cable modem termination system(CMTS) in the case of a DOCSIS transport network. The sequence shown inFIG. 7 illustrates the primary elements involved in a DOCSIS network fordelivering the Multicast ABR solution. The sequence in FIG. 7 closelyfollows the sequence identified in FIG. 6, but provides more of a systemwide context to the actions of the various elements.

At 1, the ABR client #1 issues a request for a media segment, in theform of an HTTP Req, e.g., ABR #TV_A Manifest. The ABR client 702 issuesHTTP request for bitrate manifest file, which passes through the HTTPProxy/NORM GW element 704. The HTTP/Norm gateway 704 receives the HTTPreq and transmits it to the origin server 714, thereby forwarding it outto the Origin Server 714. Identified from the HTTP request (1) thespecific ABR stream being requested 704, and identifies from thepreviously received ABR< >Multicast Mappings configuration, what MABRand QAS IP multicast are available.

As further depicted in FIG. 7: At 2: the MABR entity joins the QASmulticast streams, triggering DOCSIS processing in the DOCSIS GW (706)and CMTS processing (710) to be performed. For example, the MABRReceiver entity issues a JOIN for the QAS stream. Thus, at 2, the MABRreceiver has joined two separate multicast streams, the main MABR streamAND the QAS Multicast stream. The MABR receiver does not itself transmitmulticast traffic. The MABR receiver function is to join a multicast andtake the received multicast data fragments and reassemble into ABRfragments. The CMTS issues multicast joins for the QAS multicasts, whichare delivered to the network between the CMTS and the Multicast Server.

At 2a: the CMTS (710) reacts to the multicast join for the QAS stream,resulting in an updated Mini Carousel Protocol (MCP) list of availableIP multicasts to be delivered back to the GW DOCSIS processing (706)

At 3: the MABR entity joins the MABR multicast streams, triggeringDOCSIS processing in the DOCSIS GW (706) and CMTS processing (710) to beperformed. The CMTS issues multicast joins for the MABR multicasts,which are delivered to the network between the CMTS and the MulticastServer (712)

At 3a: the CMTS (710) reacts to the multicast join for the MABR stream,resulting in an updated Mini Carousel Protocol (MCP) list of availableIP multicasts to be delivered back to the GW DOCSIS processing (706)

At 4: The origin server (714) delivers the Manifest response to the ABRclient, consisting of the most recent set of ABR segments

At 5: the DOCSIS processing (706) processes the received MCP update andbegins to collect the QAS multicast data

At 6: the DOCSIS processing (706) processes the received MCP update andbegins to collect the MABR multicast data

At 7: the ABR Client (702) issues a HTTP request for Fragment B (3rdolder fragment in manifest)

At 8: multicast server (712) QAS multicast stream is multicast throughthe network the CMTS (710) and on to the GW HTTP/NORM GW (704)

At 9: the multicast server (712) MABR multicast stream is multicastthrough the network the CMTS (710) and on to the GW HTTP/NORM GW (704)

At 10: the MABR entity in 704 receives the QAS media segment qC andpasses this to the HTTP proxy in 704

At 11: the HTTP Proxy in 704, delays a response to the Client ABRrequest (7) until the QAS media segment is received by the MABR entityand delivered to the HTTP proxy.

At 12: the HTTP proxy delivers the collected QAS media segment qB to theABR client

At 12a: the line at 13 should occur before step 12 . . . .

At 13: the Multicast Server (712) transmits the QAS media segment qB tothe network (which is delivered all the way to the interested gateways)

At 14: the ABR client issues a request for the next media segment in themanifest (C) to the HTTP Proxy (704)

At 15: as the HTTP Proxy (704) already has QAS media segment qC (10), itresponds immediately to the ABR client (702)

At 16: the ABR client issues a request for the next media segment in themanifest (D) to the HTTP Proxy (704)

At 17: the Multicast Server (712) transmits the QAS media segment qD

At 18: the multicast server (712) transmits the MABR media segment E

At 19: the HTTP Proxy (704) responds to the ABR client request (16) withQAS media segment qD

At 20: the ABR client issues a request for the next media segment in themanifest (E) to the HTTP Proxy (704)

At 21: the Multicast Sever (712) completes the transmission of MABRsegment E

At 22: the HTTP proxy (704) responds to the ABR client (702) with theMABR media segment E (as opposed to the QAS media segment qE)

At 23: the HTTP proxy/MABR entity (704) leaves the QAS media stream andnotifies its DOCSIS processing (706). This gets propagated up to theCMTS (710)

At 24: the MABR entity continues to receive subsequent MABR mediasegments from the Multicast Server (712) and delivers these to connectedABR clients (702)

The flow diagram depicted in FIG. 7 may be paired with FIG. 8 whichdepicts how the various MABR segments may be delivered over time tomatch with the Rx QAS qXX references shown in FIG. 7. Note that otherthan the unicast HTTP requests for master and media manifests, all mediasegments are delivered using MABR.

FIG. 8 illustrates example messaging that may be required from amulticast membership perspective when trying to access the MABR and QASstreams, in the presence of the Mini Carousel Protocol (MCP) deliveringIP multicast membership details.

Manifest file 802 is shown in FIG. 8 at two different points in itssequence, at 802 with segments A, B, C, and D and again at point 802 bupdated with segment E. As will be described by the process below, 802 adefines the manifest (A, B, C, D) and segment (D) delivered during a 2second interval, 802 b defines the manifest (A, B, C, D, E) and segment(E) delivered during another 2 second interval.

At 1, the client makes the HTTP request for a manifest file for content.As further illustrated by FIG. 8:

At 1: ABR client#1 issues a HTTP request for manifest file. At thispoint the HTTP proxy intercepts the HTTP request, and gets the MABRentity running with the specific ABR stream the HTTP request was for.

At 2: the MABR entity and DOCSIS processing picks up on the MCP with thelist of available Multicast Memberships, and identifies the QASmulticast stream. It begins to buffer subsequently received QASmulticast data

At 3: the MABR entity and DOCSIS processing picks up on the MCP with thelist of available Multicast Memberships, and identifies the MABRmulticast stream. It begins to buffer subsequently received MABRmulticast data

At 4: ABR client#2 is proxied on the response to its HTTP request forthe ABR manifest file

At 5: the MABR entity completes the reception of QAS media segment qC,and passes this to the HTTP Proxy

At 6: the MABR entity completes the reception of QAS media segment qB,and passes this to the HTTP Proxy

At 7: ABR client#2 issues a HTTP request for manifest file. At thispoint the HTTP proxy intercepts the HTTP request, and gets the MABRentity running with the specific ABR stream the HTTP request was for.

At 8: the MABR entity and DOCSIS processing picks up on the MCP with thelist of available Multicast Memberships, and identifies the QASmulticast stream. It begins to buffer subsequently received QASmulticast data

At 9: the MABR entity completes the reception of QAS media segment qD,and passes this to the HTTP Proxy

At 10: the MABR entity and DOCSIS processing picks up on the MCP withthe list of available Multicast Memberships, and identifies the MABRmulticast stream. It begins to buffer subsequently received MABRmulticast data

At 11: ABR client#2 is proxied on the response to its HTTP request forthe ABR manifest file.

At 12: the MABR entity completes the reception of QAS media segment qB,and passes this to the HTTP Proxy, which discards it as it has alreadybeen received

At 13: the MABR entity completes the reception of QAS media segment qD,and passes this to the HTTP Proxy, which discards it as it has alreadybeen received

At 14: the MABR entity completes the reception of QAS media segment qC,and passes this to the HTTP Proxy, which discards it as it has alreadybeen received

At 15: the MABR entity completes the reception of QAS media segment qE,and passes this to the HTTP Proxy.

The MABR media segment during the 2 second interval shown is associatedwith the bitrate (5 Mbps) 804. The bitrate shown as 700 Kbps shown at805 is associated with the QAS media segment qD transmitted during thisinterval, and the bitrate 700 Kbps shown at 806 is also associated withthe QAS media segment qE transmitted during this interval Like thenormal MABR media segment transmission, the MABR server is responsiblefor creating the QAS stream. For example, the MABR server sets up thespecific Multicast Group (S,G), as well as requesting lower quality ABRfragments continuously. The MABR server would then keep a copy of eachof the received unicast ABR fragments and play them out as describedherein. Once a fragment is not required for further playout, thatfragment may be removed from the MABR server. is the QAS stream may beconfigured with the desired segment pattern and number of segments torepeat per segment duration. It is responsible for any retransmissionsthat may occur during the receipt of the QAS stream. In all otherregards, it treats the QAS stream like any other MABR stream.

Once the MABR receiver has managed to transition to receiving thehighest encoded bitrate media segments, it no longer needs the QASstream, so it leaves the associated multicast.

Note that the QAS concept has applications beyond the handling of ABRstream startup. It can also be used for other applications likepresenting live channel mosaics as part of a program guide provided tosubscribers.

Note the use of the disclosed QAM stream may be policy based. Inembodiments, the controller device determines on what MAIN programs aQAS should be transmitted with. Such a policy may also switch the QAS onor off for other multicast programs over time (allowing for a moredynamic application of when the QAS could be employed).

The QAS may be employed to address the “short tail” concept, where thetransmission of extra multicast traffic for a short duration aroundpopular “channel change epoch” would save significant amounts of UNICASTbandwidth. The cyclic transmission of the most recent 3-4 fragments justbefore, through, and after the “channel change epoch” would allowMulticast ABR gateways/clients from having to resort to UNICASTbandwidth at all (with the exception of requesting HLS manifest files).

The QAS can be coupled with “Silent Joins” to reduce the need forMulticast ABR (MABR) gateways from having to issue IP MulticastMembership messages (joins/leaves), reducing the impact of suchmessaging on northbound routers (e.g. CMTS platforms).

QAS may also be used for long tail TV channel, where an explicit IPMulticast Membership join request may be issued for the QAS by the MABRgateway, as part of the initial channel change process along with the“MAIN” IP multicast for the long tail TV channel. In embodiments, theQAS only flows until the MABR gateway receives all required 3-4fragments, at which point the MABR issues an explicit leave to the QASIP multicast.

It is noted that the disclosed QAS techniques may be combined with a GOPreduction. For example, a reduction of GOP from 2 seconds to a lowerduration may be a useful combination. However, some applications benefitfrom having longer GOP durations. In the case of using a shorter GOPduration with the disclosed techniques, is to cause a reduction insegment duration that the QAS is cycled through. For example, examplesdescribed herein present a two second segment duration in the variousdiagrams. Shifting to a 1 second GOP duration may result in the samecycling of fragments, however they would just be over 1 second. When aclient decides to tune to a channel, and must request multiple (3-4)fragments before decoding multimedia, then if the fragments are beingdelivered consecutively (as in the general multicast case (FIG. 5 503x)) then the clients must still wait for 3x/4x fragment duration. Withthe disclosed QAS options, the client can potentially receive all 3-4fragments within just 1 fragment duration. Thus, reducing theGOP/fragment duration significantly will result in bandwidth tradeoffs.The discrete segments may be delivered using common Internet protocols,namely HTTP over TCP/IP, a robust and reliable transfer protocol inwhich clients request content segments and web servers respondaccordingly. Thus, within an embodiment of an adaptive bit rate system,knowledge of all content segments delivered and to whom they aredelivered can be provided for use in network-based viewershipmonitoring.

FIG. 9 depicts a flow diagram for the disclosed techniques of amulticasting adaptive bit rate receiver. The flow diagram representsprocessing that may be performed by a system or device to minimizeinitial startup unicast bandwidth of an ABR client joining a multicastof a bitrate version of an ABR stream, as well as a manner fortransitioning between retrieval of segment data from a first server anda second server in an adaptive bit rate system.

At 902, a join of a first server to an in-session multicast by a secondserver may be initiated. The first server may be an adaptive bit rateserver capable of multicasting segments of adaptive bit rate content.The second server may be a multicast receiver capable of adaptive bitrate processing, also referred herein as a multicast adaptive bit ratereceiver. The second server may intercept transmissions between thefirst server and the adaptive bit rate client.

A content delivery network may include an encoder and packager forencoding and segmenting a bit stream into a plurality of segmented bitrate versions of the stream. For example, the adaptive bit rate serverin a content delivery network may include one or more encoders and oneor more packagers, as described in FIG. 1A. Encoders encode multiplebitrates for the same multimedia content and the content is split intosmall media segments, wherein each media segment relates to a durationof content and is encoded into multiple different bitrates. The segmentsmay then pass through a packager that prepares media manifest metadataassociated with content. The media segments may be encrypted. Asdisclosed herein, the adaptive bitrate server may generate a mastermanifest file that identifies available adaptive bitrate versions ofcontent.

The multicasting adaptive bit rate receiver may receive the mastermanifest file also delivered to the adaptive bit rate client from theadaptive bit rate server. The master manifest file may be continuouslyupdated as media segments become available for live adaptive bitratestreaming in an adaptive bit rate server's multicast session. Forexample, for live adaptive bitrate streaming, the adaptive bit rateserver may continuously receive updated manifest file identifying aplurality of segments for live adaptive bitrate streaming from a contentdelivery network. Thus, the manifest file may be continuously updatedwith media segments as they become available. Likewise, the adaptive bitrate receiver can multicasts the most recent media segment onceavailable in the media manifest files. The receiver may receive anadaptive bitrate request for content initiated from the adaptive bitrate client, wherein the requested content is associated with a versionof an adaptive bit rate stream identified in the master manifest file.If fragment N is the most recently available fragment in the mastermanifest file for the requested content, the ABR client may require aneven earlier fragment N-x to initiate playback. For example, when usingApple HLS, the ABR client is required to play the 4^(th) most recentfragment available within the variant manifest file for the ABR stream(e.g., fragment N−4). The manifest file is updated on every newfragment; thus, the 4^(th) most recent fragment in Manifest File #n,becomes the 5^(th) most recent fragment in Manifest File #n+1 . . . . Inexample implementations, the manifest will include the most recentfragment and a plurality of previous fragments, e.g., 20-30 previousfragments. When the Manifest File shows that segment H is the mostrecent fragment, then the MABR server will be multicasting Segment H.The ABR client will actually start requesting E, then F, then G, then H.

The join of the adaptive bit rate server's multicast session by themulticast receiver may be initiated in response to at least one adaptivebit rate client's adaptive bitrate request. The multicast receiver mayjoin the multicast session during an in-session multicast, i.e.,mid-stream. The in-session multicast may be a multicast of a version ofan adaptive bitrate stream associated with requested content, whereinthe multicast receiver collects segment data for multicasting uponrequest to a plurality of adaptive bit rate clients. It is noted thatthe multicasting adaptive bit rate receiver may be configured tomulticast to a plurality of adaptive bitrate clients requesting contentfrom the manifest file.

The disclosed QAS system enables a limited number of specific previouslow-bitrate fragments (in this case E/F/G/H) to be stripped out of themanifest file when a high-bitrate segment H is multicast out. If themulticast receiver joins a multicast session midstream, the multicastreceiver may be joining in the midst of the multicast of a segment N.Thus, the multicast receiver joins may join the multicast at point X ofa segment N, wherein X represents an interim point in the multicast datarepresented by the manifest. In this example, the data prior to theinterim point X may have already transmitted via multicast from theadaptive bit rate server. Thus, the multicast receiver has missedreceipt of a portion of the stream for the requested content. Inembodiments, the MABR Server is the only entity in the system thatmulticasts content, such that Each MABR receiver issues multicast JOINSto be able to receive this data, and ABR clients never use multicast,they only use unicast HTTP GET requests. The HTTP GET requests can betrapped by the HTTP PROXY in the MABR Receiver entity.

As described herein, such as in FIG. 7, joining a multicast session maytrigger DOCSIS Processing in a DOCSIS gateway and trigger the CMTS toissue multicast joins for MABR multicasts. The CMTS may react to amulticast join resulting by updated an MCP list of available IPmulticasts to be delivered back to the DOCSIS gateway. The multicaststream may be multicast through the content delivery network to the CMTSand local HTTP gateway. The DOCSIS gateway may process the MCP andcollect MABR multicast data. Buffers may be employed to receive MABRmulticast data. The MABR RECEIVER entity generally only JOINs multicasttraffic as a result of the HTTP Transparent Proxy “trapping” the HTTPGET requests issued by active ABR clients.

In implementations, content may be pre-cached such that fragments areavailable in the cache ahead of time, prior to an ABR client request.Such pre-emptive caching may be driven using a configuration on the MABRserver and/or the MABR receiver. Note that pre-caching can be as aresult of a popularity check across all actively viewed video sessionsthat can lead to a temporal based pre-caching. For example, at 5.59:30sec every day, the main news channel may be queued up in every GW cache.Alternatively, this can be done in relation to PVR recordings where itis known ahead of time that a PVR may require to record a specific show.

The join of a multicast may be in response to an HTTP request from anABR client for streaming a particular content. The multicast receiverbegins receiving multicast data, wherein a portion of a currentlymulticast media segment for the particular content may be missed if themulticast of the stream is already in session. In examples, the datamissed by the MABR entity can be identified as data prior to the pointin time when the receiver began listening for the multicast data fromthe adaptive bitrate server.

The MABR receiver, using knowledge of a master manifest file, which maybe retrieved from the adaptive bit rate server or a local ABR client,and media manifest requests from the local ABR client, may trigger anMABR membership request for a Quick Acquisition Stream for the requestedABR stream. Thus, the multicast receiver may receive the manifest fileand join a multicast session mid-stream.

At 904, the multicast receiver receives multicast data from themulticast session's current multicast, e.g., currently multicastingsegment N. Media segment N is the media segment currently multicast atthe time of the join by the MABR receiver. The multicast data receivedby the multicast receiver begins at a point X of the multicast streamcorresponding to a join time of the multicast server's multicastsession. Thus, in response to an ABR client request for program X thatis currently multicasting from the content delivery network, themulticast receiver may receive a partial media segment at N. However,the ABR client often requires or desires one or more prior segments ofthe multicast stream that occurred prior to point X. For example, theABR client may desire at least as many prior segments to sufficientlyplayout segments at the ABR client with buffering options and to enablea more seamless playout. Thus, the ABR client may identify that 3-4segments prior to segment N as well as a complete segment N are neededby the ABR client. As disclosed herein, instead of requiring the ABRclient to issue individual unicast requests for the desired mediasegments, the multicast receiver enables a multicast stream associatedwith the manifest file, as received and updated, streamed by themulticast server for reducing unicast bandwidth used by ABR clientdevices.

At 906, the multicast receiver identifies one or more segments todeliver to the requesting adaptive bit rate client. The segments areidentified based on segment data that has occurred (e.g., has alreadybeen transmitted by the adaptive bitrate receiver's multicasting) priorto point X of the multicast stream. The prior segments identified fordelivery to the adaptive bit rate client may be identified from requestsfor the specific prior segments from the adaptive bit rate client. In anexample implementation, the multicast receiver identifies the desiredone or more prior segments to deliver to the ABR client based onexplicit requests for such content, issued by the ABR client. Forexample, an ABR client may issue unicast HTTP requests for the one ormore prior segments. The ABR client follows the ABR protocol it uses,and issues unicast requests for all required ABR segments (including theearlier segments listed in the manifest file). In implementations, theMABR receiver, ABR client, and/or MABR server may be configured toidentify how many prior segments should be made available based on anABR client's request for content and/or based on the current fragmentstreamed from the MABR server.

The ABR client may issue HTTP requests for content. The multicastreceiver may include an HTTP proxy for receiving the HTTP requestsintended for the adaptive bit rate server, and queue responses to theHTTP requests pending receipt of the media segments at the multicastreceiver.

The multicast receiver may intercept the requests for content sent fromthe adaptive bit rate client to the first server to identify therequested content and to identify the prior segments to be delivered tothe requesting adaptive bit rate client. For example, when an ABR clientrequests media content, and determines the content prior to the startpoint of the multicast join point is desired, the ABR may issue requestsfor the corresponding segments.

The one or more identified segments may include a complete segment Nwhen point X occurs after the starting point of segment N. Inembodiments, the 3 or 4 segments prior to point X of the currentmulticast stream are identified for delivery to the requesting adaptivebit rate client.

At 908, the multicast receiver may delay delivery of requested contentto the requesting adaptive bit rate client while waiting for acollection of the one or more prior segments identified by the multicastreceiver for delivery to the adaptive bit rate client to delay a playoutby the ABR client of the segment currently multicast by the adaptive bitrate server. Delaying delivery of requested content to the requestingadaptive bit rate client while waiting for a collection of theidentified segments by the multicasting adaptive bit rate receiver mayinclude delaying delivery of the requested content until receipt fromthe adaptive bit rate server of the identified segments unavailable in alocal cache.

For example, the multicast receiver may intercept the requests from theABR client and hold the ABR client's unicast requests. As the priorsegments requested via unicast are instead received at the multicastreceiver, segments associated with the queued requests from the adaptivebit rate client may be delivered from the multicast receiver to therequesting adaptive bit rate client. Thus, the requests for the priorsegments queued in the multicast receiver may delay issuance of therequested content to the adaptive bit rate client.

The one or more identified segments may be collected by the multicastreceiver. The multicast receiver may determine first whether the segmentdata identified for delivery to the requesting adaptive bit rate clientis available in a local cache. This may occur, for example, whereanother adaptive bit rate client served by the same multicast receiverhas already similar content and therefore segments for delivering to thecurrently requesting adaptive bit rate client are already collected in alocal cache at the multicast receiver. For segments identified fordelivery to the requesting adaptive bit rate client that are unavailableat the multicast receiver, the multicast receiver may join a quickstream multicast session prepared and multicast by the MABR server.

The MABR server's quick acquisition stream (QAS) technique allowsmultiple stripped fragments to be multicasted in a just-in time-mode sothat the MABR receiver can collect the stripped fragments for playout tothe ABR clients. As described above, if the QAS streams are beingbroadcast, the MABR Receiver/HTTP proxy HOLD OFF replying to the ABRclient HTTP requests UNTIL the MABR QAS multicast fragments arereceived. The receiver, using knowledge of a master manifest filereceived from the adaptive bit rate server and media manifest requestsfrom the requesting adaptive bit rate client, a membership request tojoin a quick acquisition stream for the requested ABR stream forreceiving segments multicast from the adaptive bit rate server.

In embodiments, the multicast receiver issues one or more unicastrequests to the adaptive bit rate server for the segment data identifiedfor delivery to the requesting adaptive bit rate client. The standardhandling of a unicast ABR requests is to pass through the CMTS like allother data traffic (ie transparently).

The multicast adaptive bit rate receiver may issue a request to theadaptive bit rate server for segment data associated with the identifiedsegments, including a request for a complete segment N when point Xoccurs after the starting point of segment N. The multicasting adaptivebit rate receiver may issue to the adaptive bit rate server a partialunicast request identifying a specific bitrate covering missing bytes ofmedia segment N due to the join of the in-session multicast at point X.For example, the multicast receiver may perform a partial unicast HTTPrequest with a specific byte range covering missing bytes of currentmedia segment (i.e., instead of requesting the entire media segment),and then decide based on the % of already received multicast mediasegments which additional prior segments to request. Prior to deliveryto the ABR client, the multicast receiver may reconstitute a segment Nby combining received segment N multicast data with received segment Nunicast data. The prior segments received from the adaptive bit rateserver may be at a lower bit rate than the bitrate identified by the ABRclient in the request for content.

In response to the multicast receiver's request, the multicast receiverreceives the identified segment data that occurs prior to point X of themulticast stream. In embodiments, the one or more identified segmentsare received by the receiver within a single segment time period whilesegment N+1 is multicast by the adaptive bit rate server. The multicastreceiver may receive the prior complete segments and/or partialmulticast data during a single segment time period. As described below,the requested media segments can be provided to the ABR client in a timeless than a segment duration as available by the origin server.Referring back to the example depicted in FIG. 6, the multicast receiverjoins while current segment C is being multicast from the adaptive bitrate server. The ABR client determines that segments A, B, and acomplete segment C are needed to join multicast because the start of Cwas missed, join quick stream to, start receiving segment D at MABRreceiver and at the same time receive quick streams QB, QA, and QC,deliver QA, Qb, and Qc to client in response to HTTP requests for A, B,C.

The multicast receiver may be responsible for any retransmissions thatmay occur during the receipt of the QAS stream. The multicast receivermay also be configured to deliver segments in accordance with a desiredsegment pattern and number of segments to repeat per segment duration.The multicast receiver may discard segments already received and stored.The multicast receiver may discard segments received from the firstserver via unicast or multicast after a duration of time.

AT 910, the multicast receiver delivers segment N and any other segmentsidentified for delivery to the client that occurred prior to point X ofthe multicast stream to the requesting adaptive bit rate client.

As described above, the multicast receiver may collect multicast mediasegments and prepare them in local HTTP cache by operating a local HTTPproxy. If the requested media segments are available in local HTTPproxy, local ABR clients receive the segments from the local HTTP cache;if cache does not have any matching media segments, HTTP media segmentrequest may be propagated to a remote ABR origin server. In response torequest for a segment, one or more prior segments for the correspondingstream are delivered to a gateway cache that is local to the ABR client.The media segments received via unicast at the local proxy may bedelivered and served to any other local ABR clients that request thesame media segment.

The multicasting adaptive bit rate receiver may identify a segmentpattern in mapping information that associates ABR streams to a specificmulticast group. The segments received from the adaptive bit rate servermay be delivered by the multicast receiver to the adaptive bit rateclient in accordance with a segment pattern and a number of segmentsdesignated for repeat delivery per segment duration. The segmentsassociated with the queued requests from the adaptive bit rate clientmay be delivered to the requesting adaptive bit rate client in an ordercorresponding to the order of the requests sent by the adaptive bit rateclient.

In embodiments, the multicast receiver's HTTP proxy responds to ABRclient requests for segment with the combined unicast/multicast mediasegment. The HTTP proxy then may deliver the collected quick streammedia segments to ABR client. Other than the unicast HTTP requests formaster and media manifests, all media segments are delivered using MABR.Thus, in embodiments, the ABR client never deals with multicast. Withoutthe disclosed MABR receiver and/or server, the ABR client unicastrequests are sent to the ABR origin server. When MABR is used withoutthe disclosed QAS techniques, all ABR client unicast requests aretrapped by the HTTP Transparent Proxy; anything not in the cache (i.e.,at the START of a new request for a program) will be passed to the ABRORIGIN SERVER, anything that is in the cache may be served from thecache to the requesting ABR client.

If QAS MABR is used, then the HTTP proxy may intervene to delayresponding to the unicast ABR requests from the ABR client until themulticast stripped fragments are received; the HTTP Proxy then respondswith UNICAST responses for each outstanding HTTP GET request to the ABRclient.

The multicast receiver may transition the response to ABR client requestto the adaptive bit rater server's multicast once the ABR client'sbuffer has caught up to the currently multicasted segment. For example,the multicast receiver may exit a QAS multicast once the multicastreceiver has managed to transition to receiving the highest encodedbitrate media segments and no longer needs the QAS stream. Thus, the QASstream may only flow to the adaptive bit rate client until the multicastreceiver receives all required prior segments for deliver to the ABRclient. The multicast receiver may at this issue an explicit leave tothe QAS IP multicast to which it may be joined.

The stripped multicast media segments may be delivered to ABR clientduring a current media segment playout duration (i.e., delivered duringthe same segment duration as the current media segment is multicastingto the MABR, as opposed to normally the MABR delivering the currentmedia segment during the segment duration; thus instead the prior mediasegments may be received in the same time frame). As described above,the HTTP requests queued in proxy may be delivered to local ABR clientas the stripped multicast media segments are received, eliminating anyneed for unicast media segment retrieval related to the current mediasegment.

The multicast receiver may continue to receive subsequent media segmentsfrom the adaptive bit rate server for delivery to other connected ABRclients. Thus, the multicast receiver can make all received segmentsavailable to other local ABR clients to minimize unicast requests by theplurality of ABR clients. The result may be to minimize unicastrequests/bandwidth, which occur more heavily during channel changes orduring initial startup, thereby reserving the unicast bandwidth of anABR client. The initial start-up BW requirements may exist every time anABR client decides to switch from one ABR linear stream to another.Instead of every ABR streaming session consuming single-use BW per ABRclient, the techniques of the multicast receiver may transparentlyreducing the BW demands of multiple unicast ABR clients watching thesame linear/live content down to a single ABR BW demand perbroadcast/multicast domain

The multicast receiver may make segments received at the multicastingadaptive bit rate receiver available to other ABR clients in a multicastgroup, minimizing unicast requests to the first server by the ABRclients in the multicast group for the available media segments. Forexample, a second ABR client is proxied on the response to its HTTPrequest for the ABR manifest file; second ABR client issues HTTP requestfor manifest file; HTTP client intercepts HTTP request and gets MABRentity running with specific ABR stream and HTTP request, but checkslocal cache for any previously received quick stream segments. If thesecond adaptive bit rate client requests content requested by the firstadaptive bit rate client; the second server delivering segment dataavailable from a cache local to the second server to the second adaptivebit rate client.

As described herein, the types of content that the packager may packageincludes Live Linear, VOD, StartOver, and nDVR. VOD content and nDVRcontent were described above. Live content are television programs thatare watched in real time. This means that packaging must be an ongoingprocess that occurs simultaneously with playback. StartOver contents arelive content whose viewing can be started after the content start time.You can for example at 1:15 PM start watching a 1:00 PM live program.

The components between the content source delivering streams 102 or 104and the IP content delivery network used by the adaptive bit rate system100 to deliver fragments to the client device 134 may be located in aheadend or other suitable location within a content provider network. Acable television headend is a master facility for receiving televisionsignals for processing and distributing content over a cable televisionsystem. The headend typically is a regional or local hub that is part ofa larger service provider distribution system, such as a cabletelevision distribution system. An example is a cable provider thatdistributes television programs to subscribers, often through a networkof headends or nodes, via radio frequency (RF) signals transmittedthrough coaxial cables or light pulses through fiber-optic cables. Inembodiments, content is received at the headend from a content source(such as a content server of a program provider).

Adaptive bit rate techniques enable the content delivery system todetect a user's bandwidth and optionally other capabilities, such as CPUcapacity, in real time and adjust the quality of a video streamaccordingly. Since adaptive bit rate fragments are available on theserver in one of several bit rates, the client may switch bit rates atthe fragment boundaries. Thus, the client can adjust its request for thenext fragment. It uses an encoder which can encode a single source videoat multiple bit rates. The client switches between streaming thedifferent encodings depending on available resources. The result: verylittle buffering, fast start time and a good experience for bothhigh-end and low-end connections. The result is a system that candynamically adjust to varying network congestion levels. Often, thequality of the video stream streamed to a client device is adjusted inreal time based on the bandwidth and CPU of the client device. Forexample, the client may measure the available bandwidth and request afragment that best matches a measured available bit rate.

HTTP is a manner for retrieving files from the Internet and thetechnology is built into web browsers. HTTP has more recently become apreferred method to deliver video. It can be used to deliver video in anadaptive streaming manner in which the video is encoded into various bitrates and fragmented for delivery. Business rules, such as networkcongestion or processor utilization, are used to determine which bitrate is delivered at what time.

The disclosed packager supports adaptive bit rate streaming in anycontainer formats. Examples of these adaptive bit rate video containerformats include HTTP Live Streaming (Apple—HLS), Internet InformationServices—Smooth Streaming (Microsoft—HSS), and HTTP Dynamic Streaming(Adobe—HDS). The container formats have become de-facto industrystandards due to their widespread use. The disclosed packager alsosupports profiles from the MPEG-DASH (Dynamic Adaptive Streaming overHTTP) format, which is a standardized adaptive streaming specificationthat has been developed as an industry standard by MPEG. This systemcould be implemented in MPEG DASH without any special logic in theclient and most likely in existing proprietary adaptive bit rateschemes.

An illustrative adaptive streaming system 100 may implement, forexample, one or more open or proprietary protocols for adaptive bit ratestreaming such as HTTP Live Streaming (HLS), SecureMedia's EncryptoniteOne HLS+ solution, Microsoft Smooth Streaming, HTTP Dynamic Streaming,Dynamic Adaptive Streaming over HTTP (DASH), HTTP Smooth Streaming(HSS), and the like. The packager converts one or more multi-bit ratestreams of an input stream group into logical files formatted for aparticular output streaming format such as HLS, HDS, HSS or DASH. InHSS, HDS and DASH all of the chunks associated with a given format andbit rate are stored within the same file. In HLS however, each chunk isstored in its own file. So assuming two second chunks, three bitratesand 30 minute program the packager will create three HSS files but 2700HLS files. The packager can create multiple formats simultaneously. Eachformat to be generated is specified by a profile.

Apple HLS breaks the whole content stream in to a sequence of small HTTPbased file downloads. As the stream is played, the client selects from anumber of different bit rate streams based on the client CPU andbandwidth.

Microsoft HSS is a media services extension to enable adaptive streamingof media to clients over HTTP, using a concept of delivering smallcontent fragments (e.g., 2 seconds video) and verifying that each hasarrived within appropriate time and playback at the expected qualitylevel.

Overall quality with adaptive bit rate may be the best possible for agiven user's network connection, thereby maximizing the quality ofexperience.

In one or more examples, the functions described herein may beimplemented in hardware, software, firmware, or any combination thereof.If implemented in software, the functions may be stored on ortransmitted over as one or more instructions or code on acomputer-readable medium and executed by a hardware-based processingunit. Computer-readable media may include computer-readable storagemedia, which corresponds to a tangible medium such as data storagemedia, or communication media including any medium that facilitatestransfer of a computer program from one place to another, e.g.,according to a communication protocol. In this manner, computer-readablemedia generally may correspond to (1) tangible computer-readable storagemedia which is non-transitory or (2) a communication medium such as asignal or carrier wave. Data storage media may be any available mediathat can be accessed by one or more computers or one or more processorsto retrieve instructions, code and/or data structures for implementationof the techniques described in this disclosure. A computer programproduct may include a computer-readable medium.

By way of example, and not limitation, such computer-readable storagemedia can comprise RAM, ROM, EEPROM, CD-ROM or other optical diskstorage, magnetic disk storage, or other magnetic storage devices, flashmemory, or any other medium that can be used to store desired programcode in the form of instructions or data structures and that can beaccessed by a computer. Also, any connection is properly termed acomputer-readable medium. For example, if instructions are transmittedfrom a website, server, or other remote source using a coaxial cable,fiber optic cable, twisted pair, digital subscriber line (DSL), orwireless technologies such as infrared, radio, and microwave, then thecoaxial cable, fiber optic cable, twisted pair, DSL, or wirelesstechnologies such as infrared, radio, and microwave are included in thedefinition of medium. It should be understood, however, thatcomputer-readable storage media and data storage media do not includeconnections, carrier waves, signals, or other transitory media, but areinstead directed to non-transitory, tangible storage media. Disk anddisc, as used herein, includes compact disc (CD), laser disc, opticaldisc, digital versatile disc (DVD), floppy disk and blu-ray disc wheredisks usually reproduce data magnetically, while discs reproduce dataoptically with lasers. Combinations of the above should also be includedwithin the scope of computer-readable media.

Instructions may be executed by one or more processors, such as one ormore digital signal processors (DSPs), general purpose microprocessors,application specific integrated circuits (ASICs), field programmablelogic arrays (FPGAs), or other equivalent integrated or discrete logiccircuitry. Accordingly, the term “processor,” as used herein may referto any of the foregoing structure or any other structure suitable forimplementation of the techniques described herein. In addition, in someaspects, the functionality described herein may be provided withindedicated hardware and/or software modules configured for encoding anddecoding, or incorporated in a combined codec. Also, the techniquescould be fully implemented in one or more circuits or logic elements.

The techniques of this disclosure may be implemented in a wide varietyof devices or apparatuses, including a wireless handset, an integratedcircuit (IC) or a set of ICs (e.g., a chip set). Various components,modules, or units are described in this disclosure to emphasizefunctional aspects of devices configured to perform the disclosedtechniques, but do not necessarily require realization by differenthardware units. Rather, as described above, various units may becombined in a codec hardware unit or provided by a collection ofinteroperative hardware units, including one or more processors asdescribed above, in conjunction with suitable software and/or firmware.

I claim:
 1. A multicast receiver in an adaptive bit rate system, theadaptive bit rate system having a multicast server for generating amanifest file identifying available content and for multicastingsegments of an adaptive bitrate stream to a plurality of adaptive bitrate clients in a multicast group and to the multicast receiver, themulticast receiver for reducing an initial startup unicast bandwidth forat least one adaptive bit rate client requesting to join the multicastgroup, the multicast receiver comprising: one or more processors; and amemory communicatively coupled to at least one of the one or moreprocessors, the one or more processors configured for: in response to atleast one adaptive bit rate client's adaptive bitrate request,initiating a join of the multicast receiver to an in-session multicaststream by the multicast server having a version of the adaptive bitratestream associated with requested content, wherein the multicast receivercollects segment data for transmitting upon request to the plurality ofadaptive bit rate clients; receiving multicast data from a multicastsession's current multicast of segment N, wherein multicast datareceived by the multicast receiver begins at a point X of the in-sessionmulticast stream corresponding to a join time of the multicast receiverto the multicast server's multicast session; identifying one or moresegments to deliver to the requesting adaptive bit rate client based onsegment data occurring prior to point X of the multicast stream, theidentified one or more segments including at least one of a segmentprior to segment N in the multicast stream or segment N; delayingdelivery of requested content to the requesting adaptive bit rate clientwhile waiting for a collection of the one or more identified segments bythe multicast receiver; and delivering the one or more segmentsidentified for delivery to the at least one adaptive bit rate clientthat occur prior to point X of the multicast stream to the requestingadaptive bit rate client.
 2. The multicast receiver of claim 1, whereindelaying delivery of requested content to the requesting adaptive bitrate client while waiting for the collection of the identified one ormore segments by the multicast receiver comprises delaying delivery ofthe requested content until receipt from the multicast server of theidentified segments is available in a local cache.
 3. The multicastreceiver of claim 1, wherein the one or more identified segmentsincludes a complete segment N when point X occurs after a starting pointof segment N but before the starting point of segment N+1.
 4. Themulticast receiver of claim 3, wherein the multicast receiver issues tothe multicast server a partial unicast request identifying a specificbitrate covering missing bytes of media segment N due to the join of thein-session multicast stream at point X.
 5. The multicast receiver ofclaim 4, further comprising reconstituting segment N by combiningreceived segment N multicast data with received segment N unicast data.6. The multicast receiver of claim 1, wherein the multicast receiverissues a request to the multicast server for segment data associatedwith the identified one or more segments.
 7. The multicast receiver ofclaim 1, wherein the one or more identified segments are received by thereceiver within a single segment time period while segment N+1 ismulticast by the multicast server.
 8. The multicast receiver of claim 1,further comprising transitioning the response to the requesting adaptivebit rate client from an output of the multicast receiver to themulticast stream multicasting from the multicast server.
 9. Themulticast receiver of claim 1, wherein the one or more identifiedsegments are collected by: determining whether the segment dataidentified for delivery to the requesting adaptive bit rate client isavailable in a local cache; for unavailable segment data identified fordelivery to the requesting adaptive bit rate client, joining a quickstream multicast session from the multicast server for identifiedsegment data and receiving the identified segment data that occurs priorto point X of the multicast stream; and delivering the identifiedsegment data that occurs prior to point X of the multicast stream to therequesting adaptive bit rate client.
 10. The multicast receiver of claim1, further comprising receiving a master manifest file delivered to theat least one adaptive bit rate client from the multicast server, themaster manifest file continuously updated as media segments becomeavailable for live adaptive bitrate streaming in the multicast server'smulticast session.
 11. The multicast receiver of claim 10, furthercomprising receiving an adaptive bitrate request for content initiatedfrom the at least one adaptive bit rate client, wherein the requestedcontent is associated with a version of an adaptive bit rate streamidentified in the master manifest file.
 12. The multicast receiver ofclaim 1, further comprising intercepting the request for content sentfrom the at least one adaptive bit rate client to the multicast serverto identify the requested content and to identify the segments prior topoint X to be delivered to the requesting adaptive bit rate client. 13.The multicast receiver of claim 1, wherein the segments prior to point Xfor delivery to the at least one adaptive bit rate client are identifiedfrom requests for specific prior segments from the at least one adaptivebit rate client, the requests for the prior segments queued in themulticast receiver thereby delaying issuance of the requested content tothe at least one adaptive bit rate client.
 14. The multicast receiver ofclaim 13, wherein as the segments prior to point X requested via unicastare received at the multicast receiver, segments associated with thequeued requests from the at least one adaptive bit rate client aredelivered from multicasting adaptive bit rate receiver to the requestingadaptive bit rate client.
 15. The multicast receiver of claim 14,wherein the segments associated with the queued requests from the atleast one adaptive bit rate client are delivered to the requestingadaptive bit rate client in an order corresponding to the order of therequests sent by the at least one adaptive bit rate client.
 16. Themulticast receiver of claim 1, wherein a bitrate of the identifiedsegments prior to point X may be a different bitrate available in amanifest file than a bitrate of multicasted segment N.
 17. The multicastreceiver of claim 1, wherein segments received at the multicast receiverare available to other adaptive bit rate (ABR) clients, minimizingunicast requests to the multicast server by the ABR clients in themulticast group.
 18. The multicast receiver of claim 1, the multicastreceiver discarding segments received from the multicast server after aduration of time.
 19. The multicast receiver of claim 1, wherein amulticast session to which the at least one adaptive bit rate client istransitioned to is at a higher encoded bit rate than a bitrate of thesegments received from the multicast receiver.
 20. A method fortransitioning between retrieval of segment data from a first server anda second server in an adaptive bit rate system, the method comprising:in response to a client's adaptive bitrate request, the second serverjoining a multicast session transmitting a stream of a version of anadaptive bit rate stream associated with a requested content, whereinthe second server collects segment data for transmitting to a pluralityof adaptive bit rate clients; receiving currently multicast mediasegment N of the multicast session, wherein multicast data is receivedby the second server beginning at a point X of the multicast streamcorresponding to a join time of the multicast session by the secondserver; identifying whether to deliver any segment data prior to point Xof the multicast stream to the requesting adaptive bit rate client;during a segment interval in which segment N is delivered to the secondserver, the second server: determining whether the segment dataidentified for delivery to the requesting adaptive bit rate client isavailable in a cache local to the second server; for unavailable segmentdata identified for delivery to the requesting adaptive bit rate client,joining a quick stream multicast session or issuing one or more unicastrequests to the first server for segment data identified for delivery tothe requesting adaptive bit rate client; delaying delivery of therequested content to the requesting adaptive bit rate client whilewaiting for receipt of the identified segment data at the second server;receiving the identified segment data that occurs prior to point X ofthe multicast stream; reconstituting segment N by combining segment Nmulticast data with unicast data when point X occurs in an interim ofsegment N; delivering segment N and the identified segment data thatoccurs prior to point X of the multicast stream to the requestingadaptive bit rate client; and transitioning the response to therequesting adaptive bit rate client to the multicast stream multicastingfrom the first server.